使用valgrind的callgrind工具进行多线程性能分析
浏览:2311次 出处信息
简介
valgrind是开源的性能分析利器。 根据它的文档,可以用它来检查内存泄漏等问题,还可以用来生成函数的调用图,就这两个功能就足够有吸引力了。
本文主要是介绍如何使用valgrind的callgrind工具进行性能分析。
分析过程
使用callgrind工具生成性能分析数据
命令格式如下:
valgrind --tool=callgrind ./exproxy
其中 ./exproxy就是我们要分析的程序。执行完毕后,就会在当前目录下生成一个文件。文件名为“callgrind.out.进程号”。如,callgrind.out.31113。注意,对于daemon进程的调试,不要通过kill -9方式停止。
如果你调试的程序是多线程,你也可以在命令行中加一个参数 -separate-threads=yes。这样就会为每个线程单独生成一个性能分析文件。如下:
valgrind --tool=callgrind --separate-threads=yes ./exproxy
生成的文件除了callgrind.out.31113外,还会多出一些子线程的文件。文件名如下:
callgrind.out.31113-01 callgrind.out.31113-02 callgrind.out.31113-03
把callgrind生成的性能数据转换成dot格式数据
可以使用gprof2dot.py脚本,把callgrind生成的性能分析数据转换成dot格式的数据。方便使用dot把分析数据图形化。
脚本可以点此下载。脚本使用方式如下:
python gprof2dot.py -f callgrind -n10 -s callgrind.out.31113 > valgrind.dot
使用dot把数据生成图片
命令格式如下:
dot -Tpng valgrind.dot -o valgrind.png
生成的图片示例
通过图形,我们可以很直观的知道那段程序执行慢,并且了解相关调用关系。
建议继续学习:
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:关于时间、时区、系统时间和硬件时间
后一篇:Linux使用curl访问https站点时报错汇总 >>
文章信息
- 作者:信海龙 来源: 博学无忧
- 标签: callgrind valgrind 性能分析
- 发布时间:2014-12-08 23:23:54
近3天十大热文
- [53] Oracle MTS模式下 进程地址与会话信
- [49] 如何拿下简短的域名
- [47] Go Reflect 性能
- [47] android 开发入门
- [47] IOS安全–浅谈关于IOS加固的几种方法
- [44] 图书馆的世界纪录
- [43] 读书笔记-壹百度:百度十年千倍的29条法则
- [42] 【社会化设计】自我(self)部分――欢迎区
- [30] 视觉调整-设计师 vs. 逻辑
- [26] 程序员技术练级攻略