有时候要给别人讲函数的调用关系图,用文字描述只是一维的,呈现得不直观,用嘴去描述全靠听者在脑袋中构建调用关系,讲的时间长了,或者调用关系复杂时,就会忘记。所以有必要使用二维的工具,这里介绍一下call graph这个工具,可以分析cpp文件中函数的调用关系并生成调用图。
1. 安装callgraph
(1)安装cflow和graphviz
sudo apt-get install cflow graphviz
(2)安装 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}
如果wget下不下来,就去网站下载。
(3)安装gawk
$ sudo apt-get install gawk
2. 使用callgraph
主目录下1.cpp文件中的run()函数进行函数调用分析
(1)打开一个新的终端,先切换到主目录下
cd ~
(2)然后输入下述命令
callgraph -f run -d ./1.cpp
其中-f对应的参数代表需要分析的函数

本文介绍了如何利用callgraph工具分析cpp文件中的函数调用关系,并生成直观的调用图。首先,通过sudo apt-get install安装cflow和graphviz,接着下载并安装tree2dotx和Callgraph到/usr/local/bin。然后,安装gawk。在主目录下,针对1.cpp文件的run()函数运行callgraph命令,选择要分析的函数,最终生成SVG调用图。注意,如果函数有类名前缀,callgraph可能无法正确分析。
最低0.47元/天 解锁文章
2593

被折叠的 条评论
为什么被折叠?



