美文网首页
valgrind之性能分析功能

valgrind之性能分析功能

作者: 剑雪封侯之 | 来源:发表于2017-08-21 19:15 被阅读0次

    简介

    Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等。Valgrind可以检测内存泄漏和内存违例,还可以分析cache的使用等,灵活轻巧而又强大,能直穿程序错误的心脏,真可谓是程序员的瑞士军刀。

    和gprof分析工具类似,它对程序的运行能给我们提供很多的信息。不过和gprof不同,它不需要在编译源代码时附加特殊选项,但加上调试选项是推荐的。Callgrind收集程序运行时的一些数据,建立函数调用关系图,还可以有选择地进行cache模拟。在运行结束时,它会把分析数据写入一个文件。

    此处的性能分析主要是使用参数callgrind如函数调用栈来分析。

    使用方法

    在linux下,使用命令valgrind --tool=callgrind execname
    如果是多线程,可以增加选项--separate-threads=yes
    会在当前目录下生成文件,文件名字为“callgrind.out.进程号"
    如果为多线程,则会生成多个文件。

    文件解析

    生成的文件有两种处理方式:

    • 一种为转换为dot文件,然后再将dot文件转换为图片。
      第一、生成dot文件
      gprof2dot.py -f callgrind -n10 -s callgrind.out.31113 > valgrind.dot
      第二、将dot文件转换成图片
      dot -Tpng valgrind.dot -o valgrind.png

    • 另一种方式为使用软件 qcachegrind.exe
      用软件打开文件后,会显示如下图:

    clipboard.png

    通过上述图中百分比,可以分析出cpu调用过程中的瓶颈,从而优化程序。

    相关文章

      网友评论

          本文标题:valgrind之性能分析功能

          本文链接:https://www.haomeiwen.com/subject/csqhdxtx.html