工欲善其事必先利其器; 我发现函数调用图可以让我们更加直观地了解到源码函数直接的调用和层次关系,提高阅读源码的效率 。 1 前言看源码的时候,心血来潮想弄一下函数之前的调用关系,想起以前doxygen配合graphviz
2 graphviz 安装Graphviz (Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。ubuntu下可以直接安装; sudo apt-get install graphviz 直接输入指令后,系统开始安装; 成功安装graphviz,这里我们就可以使用dot工具了,具体使用方法如下; 3 egypt 安装egypt官网:http://www./egypt/ 下载后的文件为egypt-1.10.tar.gz;找到文件所在路径;sudo find \ -name egypt-1.10.tar.gz 然后解压:sudo tar -xvf egypt-1.10.tar.gz 解压得到egypt-1.10;
最终可以看到文件结构如下; 将egypt移动到/usr/bin,方便后面直接调用,或者将当前egypt所在路径添加到环境变量中; sudo cp egypt /usr/bin以上,已经完成了egypt的安装;使用方法如下;
4 测试编写程序test.c,具体如下所示; #include <stdio.h> 编译需要加上参数-fdump-rtl-expand生成相应的dump文件;
这里有我们需要的文件test.c.229r.expand; 输入如下指令; egypt test.c.229r.expand | dot -T png -o test.png 最终生成了顺利生成test.png,具体如下图所示; 5 结论对C语言源码的阅读用这个办法还是有点小麻烦,无法一键生成调用关系,, 另外还需要gcc编译源码生成 dumpfile文件,如果想要方便一些,可能还需要自己写脚本实现自动化,如果大佬有更好的办法,欢迎留言区讨论。 |
|