函数调用关系/结构图Callgraph【转】
文章目录
代码结构图
源码分析是程序员离不开的话题,无论是研究开源项目,还是平时做各类移植、开发,都避免不了对源码的深入解读.对于一个功能较复杂的函数,想轻易的看懂其函数调用结构比较困难,今天在次介绍一款可以帮助我们查看函数调用关系的工具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()函数进行函数调用分析
- 打开一个新的终端,先切换到Desktop路径下
cd Desktop
- 1
- 然后输入下述命令
callgraph -f main -d ./test.cpp
- 1
其中-f
对应的参数代表需要分析的函数名,在这里对主函数main()进行分析.
-d
对应的参数代表需要分析的程序地址,在这里对test.cpp进行分析.
- 确定需要分析的函数
输入2中命令后会出现如下提示,该提示主要询问你需要检测test.cpp文件中的哪一个main函数,选取需要分析的main函数前面对应的编号,在这里只有只有一个main函数,因此输入对应编号1即可
- 输出结果
输入对应编号后会自动生成函数调用图,默认使用Chrome/Chromium浏览器打开,生成的函数调用关系图与文件在同一目录下,以.svg
结尾.
若没有安装Chrome/Chromium浏览器,则可以制定使用Ubuntu自带的firefox浏览器打开,需要在第2步中加入-b
指令制定打开工具,如下所示
callgraph -f main -b firefox
- 1
运行结果
【作者】sky
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.