gprof、gprof2dot.py、dot使用方法简介
gprof、gprof2dot.py、dot使用方法简介
(1):gprof使用步骤如下,以SLIC为例:
1 在编译过程中添加-pg选项,命令如下:
1 |
|
2 运行程序,运行结束之后会形成文件gmon.out,命令如下:
1 |
|
3 使用gprof再次执行程序,并将结果重定位到prof.log中,命令如下:
1 |
|
分析prof.log就可以获得程序的调用关系、函数执行时间等信息。对gprof的分析方法见以下blog
http://blog.csdn.net/macky0668/article/details/6839517
(2):配合gprof2dot.py与dot工具的使用(我是安装在了Win10平台)
以上方法仍然存在一个问题就是分析结果不够直观,特别是函数的调用关系。因此为解决以上问题,可以配合gprof2dot.py与dot工具的使用。
1.安装gprof2dot.py与dot
GitHub - jrfonseca/gprof2dot: Converts profiling output to a dot graph.
2.通过以下地址可获得graphviz,安装graphviz后可使用dot工具
在使用上述工具前,还需要先产生prof.log文件,prof.log文件的产生方法见上文。
3.首先通过命令行进入你安装gprof2dot.py的根目录:
4.通过以下命令即可得到函数调用图:
5.结果如下:
(3):接上文补充几点可能无法产生gmon.out文件的情况:
1.程序不是从main return或exit()退出,则可能不生成gmon.out。
2.程序如果崩溃,可能不生成gmon.out。
3.测试发现在虚拟机上运行,可能不生成gmon.out。
4.程序忽略SIGPROF信号!一定不能捕获、忽略SIGPROF信号。man手册对SIGPROF的解释是:profiling timer expired. 如果忽略这个信号,gprof的输出则是:Each sample counts as 0.01 seconds. no time accumulated.
5.如果程序运行时间非常短,则gprof可能无效
参考文献:
(4条消息) gprof、gprof2dot.py、dot使用方法简介_Andy.Wang的博客-CSDN博客_gprof2dot
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!