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
     
  • 相关阅读:
    完整java开发中JDBC连接数据库代码和步骤
    2007最后一贴
    ajax数据加载经验分享
    vs2008中文版提供下载(包含中文msdn)
    修改服务器控件的ID和Name
    你使用控件吗?会用吗?
    自定义控件集
    asp.net控件开发基础示例代码打包
    javascript好文章收藏
    wpf学习笔记简单绑定
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5569404.html
Copyright © 2011-2022 走看看