zoukankan      html  css  js  c++  java
  • valgrind 打印程序调用树+进行多线程性能分析

     

     

    使用valgrind的callgrind工具进行多线程性能分析

    yum install valgrind

    /

    wget http://valgrind.org/downloads/valgrind-3.4.1.tar.bz2
    tar xvf valgrind-3.4.1.tar.bz2
    cd valgrind-3.4.1/
    ./configure --prefix=/usr/local/webserver/valgrind
    make
    make install

    简介

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

       本文主要是介绍如何使用valgrind的callgrind工具进行性能分析。

    分析过程

    使用callgrind工具生成性能分析数据

       命令格式如下:

       valgrind --tool=callgrind  ls

       其中 ls 就是我们要分析的程序。执行完毕后,就会在当前目录下生成一个文件。文件名为“callgrind.out.进程号”。如,callgrind.out.3478-01。注意,对于daemon进程的调试,不要通过kill -9方式停止。

       如果你调试的程序是多线程,你也可以在命令行中加一个参数 -separate-threads=yes。这样就会为每个线程单独生成一个性能分析文件。如下:

       生成的文件除了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.3478-01 >1.dot

    使用dot把数据生成图片

       命令格式如下:

       yum install graphviz

       dot -Tpng 1.dot -o 1.png
     
     
     
    why
    ---------------------------------------------------------------------------------------------
     
    2016-06-0811:10:25
     
  • 相关阅读:
    POJ 3258 (NOIP2015 D2T1跳石头)
    POJ 3122 二分
    POJ 3104 二分
    POJ 1995 快速幂
    409. Longest Palindrome
    389. Find the Difference
    381. Insert Delete GetRandom O(1)
    380. Insert Delete GetRandom O(1)
    355. Design Twitter
    347. Top K Frequent Elements (sort map)
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5569404.html
Copyright © 2011-2022 走看看