程序性能分析之Valgrind

valgrind是开源的性能分析利器。 根据它的文档,可以用它来检查内存泄漏等问题,还可以用来生成函数的调用图,就这两个功能就足够有吸引力了。

找到这个工具的原因是享用gprof来生成函数调用图,但是一旦我们想要处理的是一个动态库,并且只想编译动态库,那么gprof就不工作了。而Valgrind看起来是没这个问题。

立即开始,用法:

  • 编译的时候添加-g参数。

运行:

  • valgrind –tool=callgrind [callgrind options] your-program [program options]

这个看起来足够简单了。

一旦运行,可以利用

  • callgrind_control -b

来打印当前的函数堆栈。程序运行结束会生成

  • callgrind.out.<pid>

生成函数调用图:

  • callgrind_annotate [options] callgrind.out.<pid>

另外,有一个可视化工具可以专门用来显示callgrind 的输出。这个工具叫kcachegrind 。 ubuntu 上可以用sudo apt-get install kcachegrind 直接安装。

安装完成以后,用kcachegrind callgrind.out.<pid>  来显示函数调用图。 这个看上去很有用,今后可以慢慢看。



本文地址: http://www.bagualu.net/wordpress/archives/2360 转载请注明




发表评论

电子邮件地址不会被公开。 必填项已用*标注