C/C++性能测试工具---Valgrind

2023-11-03

一、valgrind memcheck--内存错误检测器

可以检测下列与内存相关的问题:

  • 未释放内存的使用
  • 对释放后内存的读/写
  • 对已分配内存块尾部的读/写
  • 内存泄露
  • 不匹配的使用malloc/new/new[] 和 free/delete/delete[]
  • 重复释放内存

 valgrind --tool=memcheck  ./a.out

二、 valgrind massif--堆分析器

监视程序内存分配。若是在运行程序中发现占用内存较多,想要知道使用内存较多的代码行,可以使用valgrind的massif工具

Massif是一个内存剖析工具。通过不断的取程序堆的快照来达到监视程序内存分配的目的。

valgrind --tool=massif ./a.out

 会生成一个massif文件,可以使用ms_print来解析这个输出文件

ms_print massif.out.32682(进程pid)

三、valgrind cachegrind--缓存和分支预测分析器

valgrind --tool=cachegrind ./a.out 

指令运行结果: 打印摘要信息

除打印信息外,还会将更详细的信息写入cachegrind.out.pid

cg_annotate cachegrind.out.pid

 四、valgrind callgrind--调用图缓存生成分析器

callgrind使用cachegrind的统计信息Ir(I cache reads, 即一条指令执行的次数)来统计程序中函数的调用情况,建立函数调用关系图,在运行结束后,会把结果写入callgrind.out.pid文件中

valgrind --tool=callgrind --separate-threads=yes ./a.out

 --separate-threads=yes 表示要查看多线程相关数据

这条指令会在当前目录下生成一个callgrind.out.pid文件

1. 查看文件

callgrind_annotate callgrind.out.pid

 结果示例  会给出Ir  文件:函数

2. 注解源文件

callgrind_annotate callgrind.out.pid XX.c

 会将XX.c的每一行代码调用次数标清楚

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C/C++性能测试工具---Valgrind 的相关文章

  • 中间件运维分析中的选型与实践

    在近期的 Kylin Data Summit 上 好买财富平台架构总监王晔倞在互联网专场上分享了好买财富在中间件运维分析平台的演进过程 好买财富为什么选择从广泛应用的 ELK 转向 Apache Kylin 呢 王晔倞 我们在监控上 通常会
  • 使用python做FamaMacBeth回归

    金融资产定价常常需要用到FamaMacBeth回归 我们用python写一个模板 可以直接将数据调成需要的格式 代入代码即可出结果 所要求的数据格式 可以从链接下载 https download csdn net download weix

随机推荐

  • 剑指 Offer 40. 最小的 k 个数

    系列文章目录 文章目录 系列文章目录 前言 一 剑指 Offer 40 最小的 k 个数 二 使用步骤 1 引入库 解法一 暴力破解法 冒泡排序 可惜超过时间限制 解法二 快速排序法 方法三 基于快速排序的数组划分 总结 前言 一 剑指 O
  • 前端埋点pv,uv以及实现思路

    埋点就是在应用或系统中通过特定的流程收集一些信息 用来跟踪项目或系统使用的状况 后续用来进一步优化产品或是提供运营的数据支撑 目前埋点实现方法可以分为三种类型 手动埋点 在需要统计数据的地方插入代码 需要入侵业务代码 优点是数据统计比较精准
  • 单片机毕设 基于单片机的人脸识别追踪

    文章目录 1 简介 2 项目简介 2 主要器件 3 硬件效果 4 软件设计 4 1 功能架构 4 2 软件程序流程图 5 部分实现代码 6 演示效果 6 最后 1 简介 Hi 大家好 今天向大家介绍一个学长做的单片机项目 基于单片机的人脸识
  • SQL Server的链接服务器创建全详细流程

    创建SQL Server链接服务器的详细流程如下 打开 SQL Server Management Studio SSMS 连接到你想要创建链接服务器的目标实例 在对象资源管理器中 展开 服务器对象 节点 右键点击 链接服务器 然后选择 新
  • 关联分析:Apriori算法

    本文代码及数据集来自 Python大数据分析与机器学习商业案例实战 步骤1 设定最小支持度和最小置信度 首先设定最小支持度为2 5 即40 最小置信度为4 5 即80 步骤2 根据最小支持度找出所有的频繁项集 这一步骤是关联分析中较为重要的
  • windows安装git和环境变量配置

    下载安装 1 从git官网下载一个git安装包 官网下载地址http www git scm com download 2 双击安装程序 进入欢迎界面点击 Next gt 3 阅读协议 点击 Next gt 4 选
  • modbus poll

    刚刚发布Modbus测试工具 Modbus Slave调试工具 不过已经是昨天了 今天开始发布Modbus测试工具 Modbus Master调试工具 做为Modbus主站 发送命令包 采集从站的数据 典型工具如 Modbus Poll M
  • 第十三章总结

    一 泛型 1 定义泛型类 泛型机制语法 类名
  • 用typedef来定义二维数组

    include
  • 线性表的基本操作,包括:创建、插入、删除、查找等基本操作

    标签 数据结构 线性表是数据结构中最直观 最简单的一类抽象数据类型 本次需要使用顺序表来实现线性表 并编写相应的测试程序对你所创建的顺序表及单链表进行测试 以下给出测试样例 输入数据格式 第一行只有一个整型数N 0
  • Linux详解

    一 Linux简介 Linux系统是一种自由和开放源代码的类Unix操作系统 只要遵循GNU通用公共许可证 任何人和机构都可以自由地使用Linux的所有底层源代码 也可以自由的修改和再发布 Linux这个词本身只表示Linux内核 但实际上
  • 1-Openwrt ipv6之-odhcp6c客户端

    wan口的拨号有好几种方式 SLAAC stateless DHCPv6 stateful DHCPv6 DHCPv6 PD 这些请求方式在odhcpv6里面都可以配置 1 odhcp6c客户端启动过程 开启openwrt config配置
  • java list分组成map

    文章目录 前期准备 实操 Lambda表达式方式 groupingBy分组 partitioningBy 分组 传统方式 总结 将List集合分成分组成map在工作中常常会遇到 这里我总结了两种方式 Lambda表达式方式和传统方式 前期准
  • Transformer(二)--论文理解:transformer 结构详解

    转载请注明出处 https blog csdn net nocml article details 110920221 本系列传送门 Transformer 一 论文翻译 Attention Is All You Need 中文版 Tran
  • 留言簿怎么用?

    看不到别人留言 自己也没法写留言 囧rz
  • React之antdesign官网虚拟列表(Table组件)二次封装

    1 功能介绍 建议 官网链接 建议 走一遍官网的虚拟列表 最好走通 官网虚拟列表功能都有 但是 官网虚拟列表里面跟之前表格 ant table tbody 相关的功能都无了 因为这块官网是整体替换了 ant table tbody 这一级的
  • 流形学习的解释

    作者 知乎用户 链接 https www zhihu com question 24015486 answer 194284643 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 最近发现我的这篇回答被人洗稿
  • 七天玩转Redis

    文章目录 Redis 事务 1 正常执行事务 2 取消事务执行 3 事务编译时异常 4 运行时异常 5 Redis乐观锁 Redis 事务 什么是事务 事务是一个单独的隔离操作 事务中的所有命令都会序列化 有顺序地执行 事务在执行的过程中
  • 数据结构-队列(链队列与循环队列)

    目录 队列的概念及结构 概念 结构 链队列 初始化QueueInit 销毁QueueDestroy 入队QueuePush 出队QueuePop 队头元素QueueFront 队尾元素QueueBack 队列长度QueueSize 判断是否
  • C/C++性能测试工具---Valgrind

    一 valgrind memcheck 内存错误检测器 可以检测下列与内存相关的问题 未释放内存的使用 对释放后内存的读 写 对已分配内存块尾部的读 写 内存泄露 不匹配的使用malloc new new 和 free delete del