callgrind
callgrind 是 valgrind 套件中的一个工具,使用方式为
1 | valgrind --tool=callgrind ./your_program your_program_args1 your_program_args2 |
运行之后,可以生成一份 callgrind.out.pid 的文件,在当前目录下。这份文件记录了运行时的一些数据,以及函数调用关系。
kcachegrind
kcachegrind 可以分析上述产生的 callgrind.out.pid 的文件,并且点击下方 call graph 可以看到调用关系图,帮助我们分析代码结构。
示例
代码:
1 |
|
1 | valgrind --tool=callgrind --dump-instr=yes --trace-jump=yes ./a.out |
kcachegrind分析
生成文件后,使用 kcachegrind 工具打开这个分析文件。
可以从图中看到函数执行时间,百分比等功能。
gprof2dot分析
使用 gprof2dot 工具,需要安装 python 和 graphviz。
1 | yum install graphviz |
之后使用上述工具对其进行分析,生成调用图。
1 | gprof2dot -f callgrind -n0 -e0 ./callgrind.out.2328 > callgrind.2328.dot |
其中 -f 指定输出格式为 callgrin d格式,-nX 指定生成的文件忽略小于 X 个 node 的函数,例如 -n10,代表函数节点小于 10 个的,在最终文件中不生成其相关信息,-eX 代表边缘阈值,与 -n 类似。