0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

如意 来源:CSDN 作者:CaspianSea 2020-06-22 09:51 次阅读

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

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

分析过程

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

命令格式如下:

valgrind --tool=callgrind 。/exproxy

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

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

valgrind --tool=callgrind --separate-threads=yes 。/exproxy

生成的文件除了callgrind.out.31113外,还会多出一些子线程的文件。文件名如下:

callgrind.out.31113-01 callgrind.out.31113-02 callgrind.out.31113-03

把callgrind生成的性能数据转换成dot格式数据

可以使用gprof2dot.py脚本,把callgrind生成的性能分析数据转换成dot格式的数据。方便使用dot把分析数据图形化。

脚本可以 这里下载。脚本使用方式如下:

使用dot把数据生成图片

命令格式如下:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 多线程
    +关注

    关注

    0

    文章

    277

    浏览量

    19919
  • Valgrind
    +关注

    关注

    0

    文章

    9

    浏览量

    6795
收藏 人收藏

    评论

    相关推荐

    Java多线程的用法

    本文将介绍一下Java多线程的用法。 基础介绍 什么是多线程 指的是在一个进程中同时运行多个线程,每个线程都可以独立执行不同的任务或操作。 与单线程
    的头像 发表于 09-30 17:07 921次阅读

    如何合理的进行线程切换与调度

    基于STM32F4XX+RTOS的多线程程序开发及线程性能分析与状态查看前言STM32F4xx系列是ST公司高性价比产品,由于可以很方便的移植RTOS系统,在
    发表于 08-24 07:33

    QNX环境下多线程编程

    介绍了QNX 实时操作系统和多线程编程技术,包括线程间同步的方法、多线程程序的分析步骤、线程基本程序结构以及实用编译方法。QNX 是由加拿大
    发表于 08-12 17:37 30次下载

    LINUX系统下多线程与多进程性能分析

    采用多进程处理多个任务,会占用很多系统资源(主要是CPU 和内存的使用)。在LINUX 中,则对这种弊端进行了改进,在用户态实现了多线程处理多任务。本文系统论述了多线程
    发表于 08-13 08:31 20次下载

    数控测井软件中的多线程编程技术

    为满足实时测井需求,提高系统资源的利用率和系统性能,在数控测井软件开发中将多线程编程技术应用其中,并对多线程编程技术应用的可行性和必要性进行分析
    发表于 01-14 17:17 32次下载

    LabWindows_CVI多线程技术的应用研究

    分析线程与进程的关系,研究了LabWindows/CVI多线程技术运行机制及其数据保护机制,对利用异步定时器实现的多线程软件与传统单线程
    发表于 08-29 14:53 68次下载
    LabWindows_CVI<b class='flag-5'>多线程</b>技术的应用研究

    MFC下的多线程编程

    计算机上的上位机制作工具语言之MFC下的多线程编程
    发表于 09-01 14:55 0次下载

    Windows多线程编程

    计算机上的上位机制作工具语言之Windows多线程编程,感兴趣的可以看看。
    发表于 09-01 15:27 0次下载

    关于多线程编程教程及经典应用案例的汇总分析

    在一个程序中,这些独立运行的程序片段叫作线程,利用它编程的概念就叫作多线程处理。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理
    发表于 10-16 16:46 0次下载

    多线程好还是单线程好?单线程多线程的区别 优缺点分析

    摘要:如今单线程多线程已经得到普遍运用,那么到底多线程好还是单线程好呢?单线程多线程的区别又
    发表于 12-08 09:33 8.1w次阅读

    什么是多线程编程?多线程编程基础知识

    摘要:多线程编程是现代软件技术中很重要的一个环节。要弄懂多线程,这就要牵涉到多进程。本文主要以多线程编程以及多线程编程相关知识而做出的一些结论。
    发表于 12-08 16:30 1.3w次阅读

    如何利用基于字节码插桩实现的多线程调试工具

    在软件演化过程中,代码的调试是不可或缺的重要环节。对于多线程程序,线程的交错和调度是非确定的,不同的线程调度会产生不同的结果,程序员较难调试多线程程序。为此,对实际项目中
    发表于 07-06 14:13 13次下载
    如何利用基于字节码插桩实现的<b class='flag-5'>多线程</b>调试<b class='flag-5'>工具</b>

    Python多线程的使用

    最近常常需要处理大量的crash数据,对这些数据进行分析,在此之前需要将存量的数据导入自己的数据库,开始一天一天的去导,发现太慢了,后来尝试通过python多线程并行导入多天数据,以此记录对于Python
    的头像 发表于 03-17 14:57 1070次阅读

    多线程如何保证数据的同步

    。本文将详细介绍多线程数据同步的概念、问题、以及常见的解决方案。 一、多线程数据同步概念 在多线程编程中,数据同步指的是通过某种机制来确保多个线程对共享数据的操作按照一定的顺序和规则
    的头像 发表于 11-17 14:22 1153次阅读

    mfc多线程编程实例

    (图形用户界面)应用程序的开发。在这篇文章中,我们将重点介绍MFC中的多线程编程。 多线程编程在软件开发中非常重要,它可以实现程序的并发执行,提高程序的效率和响应速度。MFC提供了丰富的多线程支持,可以轻松地实现
    的头像 发表于 12-01 14:29 1437次阅读