一、概述

1、Callgrind

Callgrind用于记录程序中函数之间的调用历史信息,对程序性能分析。默认情况下,收集的数据包括执行的指令数,它们与源码行的关系,函数之间的调用者、被调用者关系以及此类调用的数量。可选项是,对高速缓存模拟和分支预测(类似于Cachegrind)。

2、callgrind_annotate、callgrind_control

在程序终止时将配置文件数据写出到文件。为了呈现数据和交互式控制分析,提供了两个命令行工具:

callgrind_annotate

此命令读入配置文件数据,并打印已排序的函数列表,可选择使用源注释。
对于数据的图形可视化可以使用 KCachegrind。

callgrind_control

使用此命令可以交互式地观察和控制当前在Callgrind控件下运行的程序的状态,而无需停止程序。

3、功能

上一篇介绍过Cachegrind,Cachegrind用于收集:事件计数(数据读取,缓存未命中等)。而Callgrind用于记录函数成本。例如:函数foo调用 bar,则将成本bar加入到 foo成本中。使用callgrind_annotate或KCachegrind可以查看从main开始的调用关系图,可以查看各个点的成本,便于优化代码。

Callgrind检测函数调用和返回的能力取决于它运行的平台的指令集。它最适用于x86和amd64

【linux】Valgrind工具集详解(十五):Callgrind(性能分析图)相关推荐

  1. 【linux】Valgrind工具集详解(五):命令行详解

    一.使用方法 usage: valgrind [options] prog-and-args 使用方法:valgrind [参数选项] 程序和参数 二.选择工具 tool-selection opti ...

  2. 【linux】Valgrind工具集详解(八):Memcheck命令行参数详解

    [linux]Valgrind工具集详解(五):命令行详解中不够全,在此专门针对Memcheck工具中的命令行参数做一次详细的解释. Memcheck命令行选项 –leak-check=<no| ...

  3. 【linux】Valgrind工具集详解(一):简介

    一.Valgrind概述 Valgrind是用于构建动态分析工具的仪器框架.它附带了一组工具,每个工具都执行某种调试,分析或类似任务,可帮助您改进程序.Valgrind的架构采用模块化设计,因此可以轻 ...

  4. 【linux】Valgrind工具集详解(十三):Helgrind(线程错误检测器)

    一.概述 Helgrind用于检测C.C ++和Fortran程序中使用符合POSIX标准的线程函数造成的同步错误. POSIX中关于线程的主要抽象描述有:共享公共地址空间的一组线程.线程创建.线程连 ...

  5. 【linux】Valgrind工具集详解(七):Memcheck(内存错误检测器)

    一.概述 Memcheck是一个内存错误检测器.它可以检测C和C ++程序中常见的以下问题: 1.非法内存:如越界.释放后继续访问: 2.使用未初始化的值: 3.释放内存错误:如double-free ...

  6. 【linux】Valgrind工具集详解(二):入门

    一.使用valgrind 1.安装 安装超级简单: sudo apt-get install valgrind 2.使用 运行valgrind -h可以查看详细使用方法,命令格式如下: valgrin ...

  7. 【linux】Valgrind工具集详解(十):SGCheck(检查栈和全局数组溢出)

    一.概述 SGCheck是一种用于检查栈中和全局数组溢出的工具.它的工作原理是使用一种启发式方法,该方法源于对可能的堆栈形式和全局数组访问的观察. 栈中的数据:例如函数内声明数组int a[10],而 ...

  8. 【linux】Valgrind工具集详解(十四):Cachegrind(缓存和分支预测分析器)

    一.概述 Cachegrind,它模拟CPU中的一级缓存I1,Dl和二级缓存,能够精确地指出程序中cache的丢失和命中.如果需要,它还能够为我们提供cache丢失次数,内存引用次数,以及每行代码,每 ...

  9. 【linux】Valgrind工具集详解(十二):DHAT:动态堆分析器

    一.概述 DHAT动态堆分析器.Massif(堆分析器)是在程序结束后输出分析结果,而DHAT是实时输出结果,所以叫做动态堆分析器.Massif只记录堆内存的申请和释放,DHAT还会分析堆空间的使用率 ...

最新文章

  1. VS2005 自动生成属性(转)
  2. SpringBoot启动时实现自动执行代码的几种方式讲解
  3. ZOJ3944People Counting暴力/枚举
  4. mysql group 最大值_MySQL groupwise最大值为字段的长度
  5. 如何进行影像建库及做ArcGIS Server Cache
  6. 清华大学操作系统OS学习(十二)——信号量与管程
  7. 多个文件或pdf合并生成一个Pdf
  8. rk3568 android 11 更换系统签名
  9. 微信能通过服务器改数据解封吗,【微信新规】微信永久封号官方解封方法
  10. 【千峰网安学习】利用PE破解系统密码
  11. sql 错误码 备用
  12. html5 手绘效果,浅谈基于Canvas的手绘风格图形库Rough.js
  13. 敏捷宣言的内容及准则
  14. java中的setting文件
  15. 转载:如何更加科学理性地认识功率曲线
  16. 为何需要警惕人工智能
  17. 华为手机怎么设置初一十五提醒
  18. .NET敏捷开发框架-RDIFramework.NET V3.6版全新发布 100%源码
  19. wordpress+sakura主题建站优化
  20. html编码后台转换,html unicode编码转换方法

热门文章

  1. 割点 割边 板子 UVA-796
  2. 【opencv】(1) 基础操作:图像视频读取、图像截取、颜色通道
  3. windows下opencv安装及配置(vs2010环境)
  4. OpenCV——图像的平移旋转
  5. Python中if__name__==__main__:该如何理解
  6. 在VirtualBox 5.0.12 for Linux版本上安装CentOS 6.6 x86_64系统
  7. Blender纹理基础学习视频教程 CGCookie – Fundamentals of Texturing in Blender
  8. C语言网络编程:socket函数
  9. 在Vue的webpack中结合runder函数
  10. 性能测试之二——常用的性能测试策略