用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,可以直接使用。


生成的图如下:


1 0
原创粉丝点击