函數調用關系/結構圖Callgraph【轉】


轉自:https://blog.csdn.net/qq_16775293/article/details/87919094?utm_medium=distribute.pc_relevant_ask_down.none-task-blog-blogcommendfrombaidu-1.nonecase&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-blog-blogcommendfrombaidu-1.nonecas

文章目錄


代碼結構圖

  源碼分析是程序員離不開的話題,無論是研究開源項目,還是平時做各類移植、開發,都避免不了對源碼的深入解讀.對於一個功能較復雜的函數,想輕易的看懂其函數調用結構比較困難,今天在次介紹一款可以幫助我們查看函數調用關系的工具Callgraph.
  使用Callgraph對前面博客中獲取當前工程路徑的代碼進行函數調用分析,分析結果如下圖.


Callgraph安裝

以 Ubuntu 為例,安裝cflow和graphviz

	$ sudo apt-get install cflow graphviz 
  • 1

接下來安裝 tree2dotx 和 Callgraph,這里都默認安裝到 /usr/local/bin。

    $ wget -c https://github.com/tinyclub/linux-0.11-lab/raw/master/tools/tree2dotx $ wget -c https://github.com/tinyclub/linux-0.11-lab/raw/master/tools/callgraph $ sudo cp tree2dotx callgraph /usr/local/bin $ sudo chmod +x /usr/local/bin/{tree2dotx,callgraph} 
  • 1
  • 2
  • 3
  • 4

最后安裝gawk

    $ sudo apt-get install gawk 
  • 1

使用方法簡介

對Desktop下test.cpp文件中的main()函數進行函數調用分析

  1. 打開一個新的終端,先切換到Desktop路徑下
	cd Desktop
  • 1
  1. 然后輸入下述命令
	callgraph -f main -d ./test.cpp 
  • 1

其中-f對應的參數代表需要分析的函數名,在這里對主函數main()進行分析.
-d對應的參數代表需要分析的程序地址,在這里對test.cpp進行分析.

  1. 確定需要分析的函數
      輸入2中命令后會出現如下提示,該提示主要詢問你需要檢測test.cpp文件中的哪一個main函數,選取需要分析的main函數前面對應的編號,在這里只有只有一個main函數,因此輸入對應編號1即可
  1. 輸出結果
    輸入對應編號后會自動生成函數調用圖,默認使用Chrome/Chromium瀏覽器打開,生成的函數調用關系圖與文件在同一目錄下,以.svg結尾.

若沒有安裝Chrome/Chromium瀏覽器,則可以制定使用Ubuntu自帶的firefox瀏覽器打開,需要在第2步中加入-b指令制定打開工具,如下所示

 

callgraph -f main -b firefox 
  • 1

運行結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM