測試了多個c語言的call-graph產生器,覺得最好用的還是cflow這個指令,
配合htags,能產生超強大的html來瀏覽source code
以下將說明指令使用方式
安裝相關套件:
yum install cflow global
cflow使用方式:
首先先切換到專案底下:
cd myproject;
目錄的結構大約如下,source code分別放在src及lib資料夾
myproject
+--src
+--a.c
+--b.c
+--lib
+--cqji.c
假設我的程式碼分別放在src及lib目錄下,我希望產生所有c檔的call-graph,
cflow src/*.c lib/*.c;
執行後輸出:
main() <int main (int argc, char *argv[]) at src/main.c:319>:
getopt()
print_usage() <void print_usage (const char *pro_name) at src/main.c:40>:
printf()
time()
printf()
ctime()
packet_queue_init() <BOOL packet_queue_init (void) at src/packet_queue.c:22>:
pthread_mutex_init()
flow_init() <int flow_init (void) at src/flow.c:175>:
flow_hash_init() <int flow_hash_init (void) at src/hash_table.c:30>:
MALLOC()
pthread_mutex_init()
flow_queue_init() <int flow_queue_init (void) at src/flow_queue.c:27>:
pthread_mutex_init()
pthread_create()
可以加上-T選項,產生如下
+-main() <int main (int argc, char *argv[]) at src/main.c:319>
+-getopt()
+-print_usage() <void print_usage (const char *pro_name) at src/main.c:40>
| \-printf()
+-time()
+-printf()
+-ctime()
+-packet_queue_init() <BOOL packet_queue_init (void) at src/packet_queue.c:22>
| \-pthread_mutex_init()
+-flow_init() <int flow_init (void) at src/flow.c:175>
| +-flow_hash_init() <int flow_hash_init (void) at src/hash_table.c:30>
| | +-MALLOC()
| | \-pthread_mutex_init()
| \-flow_queue_init() <int flow_queue_init (void) at src/flow_queue.c:27>
| \-pthread_mutex_init()
+-pthread_create()
配合htags指令,可以產生一個超強大的html
cflow src/*.c -o cflow.txt -f posix
htags -ngoIsv --cflow cflow.txt
沒有留言:
張貼留言