函数调用关系/结构图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

运行结果

 

posted @ 2020-10-16 16:25  Sky&Zhang  阅读(1156)  评论(0编辑  收藏  举报