用valgrind kcachegind gprof2dot等生成函数调用图
来源:互联网 发布:数据库服务器配置 编辑:程序博客网 时间:2024/05/18 15:04
为了分析大型软件动态运行时的函数调用关系,有时需要抓取其trace分析。目前一般有几种办法:
1. 对于内核,用ftrace,具体可搜索
2. 对于用户态应用程序:gprof、valgrind两个工具可以抓取函数动态调用关系
本文使用valgrind:
1. valgrind --tool=callgrind xxx
xxx代表原来你运行程序的命令,可以带着参数
2. 以上会生成callgrind.out.2328类似的文件,其中数字代表进程pid
3. 根据以上trace生成dot文件:
#gprof2dot -f callgrind -n0 -e0 ./callgrind.out.2328 >callgrind.2328.dot
其中-f指定输出格式为callgrind格式, -nX指定生成的文件忽略小于X个node的函数,例如-n10,代表函数节点小于10个的,在最终文件中不生成其相关信息,-eX代表边缘阈值,与-n类似。
4. 根据dot文件生成svg向量图
#dot callgrind.2328.dot -Tsvg -o callgrind.2328.dot.svg
以上callgrind.2328.dot.svg是向量图,可以用图片浏览软件直接打开
5.A kcachegrind打开callgrind.2328.dot
kcachegrind callgrind.2328.dot
5.B 如果在Windows下,可以用qcachegrind等类似kcachegrind的软件打开,另外在win下有人把linux下的kcachegrind编译生成了kcachegrind,可以直接使用。
生成的图如下:
- 用valgrind kcachegind gprof2dot等生成函数调用图
- cygwin环境下gprof+gprof2dot+dot生成函数关系结构图
- 用CodeViz 生成函数关系调用图
- Linux下使用valgrind做内存泄露检测及绘制函数调用图
- 采用valgrind来分析内存泄漏 和trace 函数调用
- 用callgraph生成的两张函数调用关系图
- 生成函数调用图(转贴+补充)
- 用Doxygen+Graphviz生成函数调用流程图
- 用Doxygen+Graphviz生成函数调用流程图
- 用Doxygen+Graphviz生成函数调用流程图
- 用Doxygen+Graphviz生成函数调用流程图
- 用Doxygen+Graphviz生成函数调用流程图
- linux下用valgrind做内存检查(内存泄露等)
- 生成/创建 DLL 及调用/引用DLL里的函数、全局变量、静态C++类成员函数等
- 用Graphviz和pvtrace等工具可视化C函数调用
- 使用gprof 或 valgrind查看函数调用频率及程序性能瓶颈调试
- gprof2dot dot2png
- gprof2dot.py
- PHP函数
- [绍棠] AFNetworking 3.0 Code=-1016 错误解决方案
- 关于Java覆盖equals方法时必须覆盖hashCode方法
- python第一天:hello world
- Java之计算机简单的加减乘除运算以及连续的加法,减法,乘法,除法运算
- 用valgrind kcachegind gprof2dot等生成函数调用图
- traceroute和 tracert
- 进程间通信-----共享内存
- IntelliJ IDEA 之 HelloWorld 项目创建及相关配置文件介绍
- 一张图说明python包管理工具:distribute、pip、 easy_install 之间关系
- ccf/201412-2/Z字形扫描---java
- Angular前言
- Ubuntu 14.04下编译WebRTC
- 安卓6.0权限控制库