总结:
make  (-fdump-rtl-expand)  去除编译优化,比如-O3
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]; }

使用egypt+graphviz生成函数调用关系图示例的更多相关文章

  1. 用callgraph生成的函数调用关系图

    Wu Zhangjin 创作于 2015/04/05 评论打赏 By Falcon of TinyLab.org 2015/04/03 1 故事缘由 源码分析是程序员离不开的话题.无论是研究开源项目, ...

  2. 用callgraph生成的两张函数调用关系图

    参考这里,感觉很Cool吧. Linux-0.11函数调用关系图: QEMU函数调用关系图:

  3. 分析函数调用关系图(call graph)的几种方法

    绘制函数调用关系图对理解大型程序大有帮助.我想大家都有过一边读源码(并在头脑中维护一个调用栈),一边在纸上画函数调用关系,然后整理成图的经历.如果运气好一点,借助调试器的单步跟踪功能和call sta ...

  4. Python - 使用objgraph生成对象引用关系图

    1- objgraph简介 HomePage:https://mg.pov.lt/objgraph/ PyPI:https://pypi.org/project/objgraph/ 一般用于分析pyt ...

  5. 用Doxygen+Graphviz生成函数调用流程图(转)

    源文链接: http://wildpointer.net/2012/04/14/doxygen_graphviz/ 上面这张图是用Doxygen+Graphviz从netcat的源代码生成的函数调用关 ...

  6. [转] 使用CodeViz生成C/C++函数调用关系图

    运行环境:虚拟机下的Ubuntu 11.04 结合Graphviz工具,使用CodeViz可以生成直观和漂亮的C/C++程序函数之间的调用关系图. 1.安装graphviz 在安装CodeViz之前, ...

  7. c语言分析函数调用关系图(call graph)的几种方法

    一.基于 Doxygen或 lxr 的API形式的文档系统. 二.基于CodeViz, CodeViz是<Understanding The Linux Virtual Memory Manag ...

  8. 用CodeViz绘制函数调用关系图(call graph)

    CodeViz是<Understanding The Linux Virtual Memory Manager>(at Amazon,下载地址在页尾)的作者 Mel Gorman 写的一款 ...

  9. python函数调用关系图(python call graph)

    由于要重构项目的部分代码,要整理好主要的函数调用关系,不想自己看代码慢慢画出结构,想找出一种通用的,节省人力的方法得出函数间的调用关系图,于是发现以下几个工具.(内网没装好graphviz,还没真正用 ...

随机推荐

  1. javascript仿天猫加入购物车动画效果

    javascript仿天猫加入购物车动画效果   注意:首先需要声明的是:代码原思路不是我写的,是在网上找的这种效果,自己使用代码封装了下而已:代码中都有注释,我们最主要的是理解抛物线的思路及在工作中 ...

  2. SpringMvc 相关,bean map转换,百度天气,base64.js,jsBase64.java;

    1. Map<String, Object>与JavaBean[POJO, Model]转换; //model public class model{ private int id; pr ...

  3. C#操作XML类

    XML转换成HTML 1.//装载xsl XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load("output. ...

  4. cf.VK CUP 2015.B.Mean Requests

    Mean Requests time limit per test 4 seconds memory limit per test 256 megabytes input standard input ...

  5. angular js 自定义指令

    我们有些时候需要把后台返回过来的带有html标签的字符串binding到界面中一个指定的div或者其他的控制器中. 使用普通ng-bind不会自动解析出html语句. js中这样定义: app.dir ...

  6. 【leetcode】Sudoku Solver

    Sudoku Solver Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are i ...

  7. 手动创建第一个JSP应用

    当按照上一篇文章所说的,配置好了tomcat服务器之后,我们就可以开发运行在tomcat上的第一个web应用了,在对tomcat的目录了解之后,我们知道webapps是存放我们编写相应应用程序的目录, ...

  8. Ubuntu 用户安装 MATE

      MATE 是经典桌面 Gnome 2 的分支,该桌面按照 Windows 用户操作习惯设计,适合于 Windows 转投 Linux 的初级用户,MATE 做了功能改进和新增功能.如:增加窗口管理 ...

  9. Cocos2d-JS的屏幕适配方案

    Cocos2d引擎为游戏开发者提供了屏幕适配策略(Resolution Policy)解决方案. 使用方式 1. 设置屏幕适配策略(Resolution Policy) 如果你还没有用过Resolut ...

  10. Codeforces 424A (思维题)

    Squats Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit Statu ...