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
     
  • 相关阅读:
    初识面向对象
    Git 子模块
    至今为止项目中遇到的问题
    vuex , 简单入(liao)门(jie)
    Git rebase
    Git
    js设计模式工厂模式
    vue slot
    Jquery学习,一道笔试题:关于表格【最近记】
    闭包与this学习
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5569404.html
Copyright © 2011-2022 走看看