valgrind的使用、原理
1),使用未初始化的内存2),读/写已经被释放的内存3),读/写内存越界4),读/写不恰当的内存栈空间5),内存泄露,指向一块内存的指针永远丢失6),使用malloc/new/new[]和free/delete/delete[]不匹配7),memcpy()相关函数中的src和dst的内存重叠常用选项:--leak-check=<no|summary|yes|full> [default:summary]
2,cachegrind
cache剖析器,模拟执行CPU中的L1,D1和L2 cache,可以很精准的支出戴拿中的cache未命中。可以打印cache未命中的次数、内存引用和发生cache未命中的每一行代码,每一个函数,每一个模块。可以打印每一行机器码的未命中次数。
3,helgrind
查找多线程中的竞争数据寻找内存中被多个线程访问,而又没有一贯加锁的区域,这些区域往往是线程之间失去同步的地方,而且会导致难以发掘的错误。
4,Callgrind
收集程序运行时的一些数据,函数调用关系等信息,汉可以有选择的进行cache模拟,在运行结束后,它会把分析数据写入一个文件,callgrind_annotate可以吧这个文件的内容转化成可读的形式
一般用法:
valgrind --tool=callgrind ./test 会在当前目录下生成callgrind.out.[pid]
killall callgrind 结束程序
callgrind_annotate --auto=yes callgrind.out.[pid] > log
vi log
5,Massif
堆栈分析器,能测量程序在堆栈中使用了多少内存
6,lackey
lackey是一个实例程序,以其为模板可以创建你自己的工具,在程序结束后,它打印一些基本的关于程序执行统计数据
Valgrind的参数(所有工具都适应)
内存检查原理
valgrind的使用、原理相关推荐
- valgrind基础
valgrind 官网 原理 官网解释 Your program is then run on a synthetic CPU provided by the Valgrind core. As ne ...
- HeadFirstC笔记_6 数据结构与动态存储:牵线搭桥
保存可变数量的数据 由于数组长度是固定的,为了保存可变数量的数据,需要一个比数组更灵活的东西,即链表. 链表就是一连串的数据 链表是一种抽象数据结构.链表是通用的,可以用来保存很多不同类型的数据,所以 ...
- valgrind的说明使用和原理
编译 #gcc -g -o test test.c 内存检查 #valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./tes ...
- 【linux】Valgrind工具集详解(十):SGCheck(检查栈和全局数组溢出)
一.概述 SGCheck是一种用于检查栈中和全局数组溢出的工具.它的工作原理是使用一种启发式方法,该方法源于对可能的堆栈形式和全局数组访问的观察. 栈中的数据:例如函数内声明数组int a[10],而 ...
- 【linux】Valgrind工具集详解(六):使用Valgrind gdbserver和GDB调试程序
一.概述 在Valgrind下运行的程序不是由CPU直接执行的.相反,它运行在Valgrind提供的合成CPU上.这就是调试器在Valgrind上运行时无法调试程序的原因. 二.快速入门 在使用Mem ...
- 【linux】Valgrind工具集详解(二):入门
一.使用valgrind 1.安装 安装超级简单: sudo apt-get install valgrind 2.使用 运行valgrind -h可以查看详细使用方法,命令格式如下: valgrin ...
- 内存泄漏的定位与排查:Heap Profiling 原理解析
系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败,这就是典型的内存泄漏问题.这类问题通常难以预测,也很难通过静态代码梳理的方式定位.Heap Profiling 就是帮助我们解决此类问题的 ...
- c linux new使内存耗尽_C/C++的内存泄漏检测工具Valgrind memcheck的使用经历
Linux下的Valgrind真是利器啊(不知道Valgrind的请自觉查看参考文献(1)(2)),帮我找出了不少C++中的内存管理错误,前一阵子还在纠结为什么VS 2013下运行良好的程序到了Lin ...
- valgrind 的使用简介
一 valgrind是什么? Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合.Valgrind由内核(core)以及基于内核的其他调试工具组成.内核类似于一个框架 ...
最新文章
- BZOJ4866 Ynoi2017由乃的商场之旅(莫队)
- fastdfs上传文件_SpringBoot+FastDFS搭建分布式文件系统
- deactivate_sending在创建新的table entry时的作用
- python安装后无法使用_Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)...
- editplus保存时自动创建备份文件设置关闭
- PHP 正则表达式资料
- 2.10 m 个样本的梯度下降
- linux 驱动编译静态,Linux驱动静态编译和动态编译方法详解
- postgresql授权和撤销
- quartus仿真27:JK触发器构成的同步十进制可逆计数器(分析)
- 1 dhcp服务器的配置文件,Linux1 DHCP服务器配置 主配置文件(dhcpd.conf)
- 安装和运行,意思差异应该很明显
- STM32CubeMX学习笔记(26)——SDIO接口使用(读写SD卡)
- @Aspect 注解使用详解
- 把unc0ver.ipa重签名后安装到手机上实现越狱
- LAN9220 MII并行接口 PHY设备
- th标签内的Cannot resolve ‘msg‘爆红出现的问题
- 锤子官方再曝新手机 暗示坚果Pro采用新后壳
- 更简单获取到Bean对象(1)
- Docker Dashboard
热门文章
- Codeforces 940E - Cashback
- 三下乡辅导孩子计算机知识,【“三下乡”社会实践活动】计算机学院——每个课程,都是你我成长的故事...
- 基于OpenCV的混凝土裂纹检测
- 加载组件Already included file name ‘e:/Vuejs/组件/单文件组件/vue_test/src/components/Message.vue‘ differs from
- 服务器系统挂安卓游戏吗,云服务器可以挂游戏吗
- Access 2007技巧 “伊妹儿”数据采集
- 【C语言程序设计】实验 2
- 【C语言程序设计】实验 1
- 区块链应用开发快速入门
- hihoCoder #1558 : H国的身份证号码I