使用egypt+graphviz生成函数调用关系图示例
来源:互联网 发布:网络的图标不见了 编辑:程序博客网 时间:2024/06/11 08:22
总结:
make (-fdump-rtl-expand) 去除编译优化,比如-O3
egypt test.c.128r.expand >test.dot 可以手动打开dot文件去除一些孤立的点, 主要是egypt的使用
dot test.dot -Tpng -o test.png
egypt --omit av_ts_make_time_string,av_ts_make_string --include-external test.c.128r.expand
其中--omit是忽略哪些函数
--include-external显示调用的第3方库函数,比如av_register_all, fwrite
dot选项中
-Grankdir=LR表示将图从左到右,而不是从上到下排列
环境:centos 64
1,安装perl
yum install perl
为了防止后面“perl Makefile.PL”时出现“Can't locate ExtUtils/MakeMaker.pm”错误,需要:
yum install perl-devel
如果还不行:
yum install perl-CPAN
2,安装egypt: create call graph from gcc RTL dump
让编译器自己dump出调用关系,然后分析分析,交给Graphviz去绘图
下载 http://www.gson.org/egypt/
链接:http://pan.baidu.com/s/1bnwd2W3 密码:n3t9
perl Makefile.PL make make install
其文档位于http://www.gson.org/egypt/egypt.html
3,安装Graphviz
yum list 'graphviz*'yum install 'graphviz*'
4,准备一份源码测试:
主要是要加上-fdump-rtl-expand编译选项,参见makefile文件 ,让gcc dump出egypt需要的文件
a,输入 make命令dump出egypt需要的文件 test.c.128r.expand
b,
egypt test.c.128r.expand >test.dot
如果有N个expand文件,可以
egypt *.expand > all.dot
图太大可用svg格式
c,
dot test.dot -Tpng -o test.png
生成的png文件:
附:dot文件内容
digraph callgraph {"test2" -> "test3" [style=solid];"main" -> "test1" [style=solid];"main" -> "test2" [style=solid];}
0 0
- 使用egypt+graphviz生成函数调用关系图示例
- 使用egypt+graphviz分析ffplay的函数调用关系图
- 使用egypt+graphviz分析ffplay的函数调用关系图
- 如何使用Doxygen 生成函数调用关系图(graphviz 2.30、chm)
- 使用Doxygen+graphviz+Sublime2来看代码,查看函数调用关系
- Windows平台下Doxygen+GraphViz+HtmlHelp自动生成函数调用关系图
- Windows平台下Doxygen+GraphViz+HtmlHelp自动生成函数调用关系图
- 用Doxygen+Graphviz生成函数调用流程图
- 用Doxygen+Graphviz生成函数调用流程图
- 用Doxygen+Graphviz生成函数调用流程图
- 用Doxygen+Graphviz生成函数调用流程图
- 用Doxygen+Graphviz生成函数调用流程图
- Doxygen+Graphviz生成函数调用流程图
- 【GraphViz】GraphViz的使用以及Java调用GraphViz生成结构化图(windows)
- codeviz+graphviz分析项目的函数调用关系
- 用Doxygen + Graphviz生成函数调用流程图/类图
- 转载_用Doxygen+Graphviz生成函数调用流程图 转
- Graphviz + CodeViz生成C/C++函数调用图(call graph)
- HDOJ 1272 小希的迷宫(并查集)
- CodeForces 628 B New Skateboard
- java设计模式_开放封闭原则
- 多校联合训练8&&HDU 5828
- Java--------迭代器Iterator
- 使用egypt+graphviz生成函数调用关系图示例
- POJ -- 1458 Common Subsequence
- poj3126 Prime Path
- eg:输入1 6 5 其中6是偶数,二进制表示为110,反转后为011,代表3,所以最终输出1 3 5.
- float与double的MAX-MIN
- JZOJ4678. 【NOIP2016提高A组8.11】钱仓
- HDU 1025 Constructing Roads In JGShining's Kingdom
- HDU 2191:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (多重背包)
- Github排行榜