.cdepn 呼叫關係檔,Perl 腳本整理後餵給 Graphviz。apt-get install graphviz 或官網下載)。contrib/download_prerequisites 自動抓 GMP/MPFR/MPC)。./configure && make install-codeviz 安裝 genfull, gengraph 至 /usr/local/bin。# 1. 用 CodeViz GCC 編譯專案(僅 -c)
~/gcc-graph/bin/gcc -c *.c
# 2. 產生完整呼叫圖資訊
genfull
# 3. 針對特定函式產生圖形
gengraph --output-type png -f main -d 2 -s "OSInit" -i "OSCPUSaveSR;OSCPURestoreSR"
-f:根函式(入口)。-d:最大深度。-s:摺疊指定函式(不展開內部)。-i:忽略指定函式。-r:反向(顯示呼叫者)。-k:保留中間 sub.graph 供手動調整。--output-type:png, gif, ps, html 等。大型專案可啟動 genfull -daemon 背景服務,gengraph 透過 socket 查詢,避免重複解析 full.graph。
download_prerequisites 腳本自動處理。m4 缺失:apt-get install m4。bits/predefs.h 找不到:設定 C_INCLUDE_PATH。crti.o 找不到:設定 LIBRARY_PATH。unwind-dw2.c 編譯錯誤:註解 MD_FALLBACK_FRAME_STATE_FOR 相關程式碼(GCC 4.6.2 已知 Bug)。分析 uC/OS-II 範例專案,從 main 逐步摺疊/忽略函式,最終產生清晰呼叫圖,輔助程式碼閱讀與重構。