工欲善其事必先利其器; 我發(fā)現(xiàn)函數(shù)調(diào)用圖可以讓我們更加直觀地了解到源碼函數(shù)直接的調(diào)用和層次關(guān)系,提高閱讀源碼的效率 。 1 前言看源碼的時候,心血來潮想弄一下函數(shù)之前的調(diào)用關(guān)系,想起以前doxygen配合graphviz
2 graphviz 安裝Graphviz (Graph Visualization Software的縮寫)是一個由AT&T實驗室啟動的開源工具包,用于繪制DOT語言腳本描述的圖形。ubuntu下可以直接安裝; sudo apt-get install graphviz 直接輸入指令后,系統(tǒng)開始安裝; 成功安裝graphviz,這里我們就可以使用dot工具了,具體使用方法如下; 3 egypt 安裝egypt官網(wǎng):http://www./egypt/ 下載后的文件為egypt-1.10.tar.gz;找到文件所在路徑;sudo find \ -name egypt-1.10.tar.gz 然后解壓:sudo tar -xvf egypt-1.10.tar.gz 解壓得到egypt-1.10;
最終可以看到文件結(jié)構(gòu)如下; 將egypt移動到/usr/bin,方便后面直接調(diào)用,或者將當前egypt所在路徑添加到環(huán)境變量中; sudo cp egypt /usr/bin以上,已經(jīng)完成了egypt的安裝;使用方法如下;
4 測試編寫程序test.c,具體如下所示; #include <stdio.h> 編譯需要加上參數(shù)-fdump-rtl-expand生成相應(yīng)的dump文件;
這里有我們需要的文件test.c.229r.expand; 輸入如下指令; egypt test.c.229r.expand | dot -T png -o test.png 最終生成了順利生成test.png,具體如下圖所示; 5 結(jié)論對C語言源碼的閱讀用這個辦法還是有點小麻煩,無法一鍵生成調(diào)用關(guān)系,, 另外還需要gcc編譯源碼生成 dumpfile文件,如果想要方便一些,可能還需要自己寫腳本實現(xiàn)自動化,如果大佬有更好的辦法,歡迎留言區(qū)討論。 |
|