首页 > linux valgrind Memcheck--内存检查工具

linux valgrind Memcheck--内存检查工具

linux valgrind Memcheck–内存检查工具

使用方法:

注意,这里要用debug版本,如果是release的运行文件,则用debug编译出来的可执行文件替换

输出到终端:

valgrind --tool=memcheck --leak-check=full ./test.out

输出到文件:

 valgrind --tool=memcheck --leak-check=full  --log-file=test.log  ./test.out

报错如下图所示:

在这里插入图片描述

这里显示的是报错时候的函数调用堆栈,默认显示12层,所以这里的最底层的函数并不一定是你的调用函数,而可能是由于限制显示不出来而已,

可以有参数指定可显示的堆栈层数,自行百度

忽略指定错误(例如第三方库的报错)

比如glibc就会报一堆的错误,然而我们并不关心,所以我们可以选择忽略这个错误,

1、先加 --gen-suppressions=all 参数运行一遍 ,

valgrind  --tool=memcheck   --gen-suppressions=all --log-file=test.log  ./test.out

在日志文件test.log 中就会看到每一个报错上面都会紧接着一个规则块,这个规则块用于忽略这个错误,

如图:

在这里插入图片描述

然后把想忽略的错误的规则块,复制一下,新建一个valgrind.supp的文件(后缀是.supp就行,名称其实没关系),

把复制的规则块拷贝进去,规则块可以有多个,如下:

在这里插入图片描述

2、当然这里显示的很详细,这个块里有动态库的信息,有函数的信息,这个块我们可以做一个扩展,

比如我想屏蔽这个函数的所有错误,如下, 我想renderScene 这个函数相关的所有报错,就在它下面加上三个点 (…)

{



Memcheck:Addr4

obj:/usr/lib/x86_64-linux-gnu/dri/i965_dri.so

obj:/usr/lib/x86_64-linux-gnu/dri/i965_dri.so

obj:/usr/lib/x86_64-linux-gnu/dri/i965_dri.so

fun:_ZN16QSGBatchRenderer8Renderer17renderMergedBatchEPKNS_5BatchE

fun:_ZN16QSGBatchRenderer8Renderer13renderBatchesEv

fun:_ZN16QSGBatchRenderer8Renderer6renderEv

fun:_ZN11QSGRenderer11renderSceneERK11QSGBindable

fun:_ZN11QSGRenderer11renderSceneEj



}

3、屏蔽整个动态库的所有报错, 在这个库的前后都加三个点,一般还需要加上addr8的一个块(这里就不展开来讲了,照写就行)

{



Memcheck:Addr4



obj:/usr/lib/x86_64-linux-gnu/dri/i965_dri.so



}

{



Memcheck:Addr8



obj:/usr/lib/x86_64-linux-gnu/dri/i965_dri.so



}

4、使用.supp文件运行valgrind,忽略指定错误

valgrind  --tool=memcheck --suppressions=valgrind.supp    --log-file=test.log  ./test.out

更多相关:

  • 一、代码结构概览1.核心部分configs:储存各种网络的yaml配置文件datasets:存放数据集的地方detectron2:运行代码的核心组件tools:提供了运行代码的入口以及一切可视化的代码文件。2.Tutorial部分demo:显而易见就是demodocs: 同样显而易见。。tests:提供了一些测试代码projects:...

  •     我刚刚接手这个项目的时候就被一系列不知所措的文件命名给深深的震惊了,那种振聋发聩不亚于听到赌王离世的消息。 首先请看,文件本来是用于处理“请假审批”,但是文件名居然叫做“teaApprove”,不要欺负我的初中英语不好,这个teaApprove我第一个感觉就是和“喝茶、茶叶”有关的业务,可是和我们这个项目八竿子打不着...

  • 这个问题简单,不做过多描述,如题所述,如果因为这个导致错误,请安装 npm install stylus-loader css-loader style-loader -D...

  • 使用这个宏TS_VERSION_MAOR来判断,这个宏定义在编译时生成在apidefs.h,它包含在ts/ts.h中,所以请在插件这包含...

  •     如果常规检查都做过可以仔细看下微信开放文档 这个里面的报错原因 如果都不是那么极有可能是(恭喜你!看样子你的H5页面日活人数还蛮多[呲牙]) 获取腾讯微信平台access_token超过每日默认上限2000次导致无法获取本地地理信息坐标,通常会报错 errMsg: "config:fail,Error: 系统错误,...

  • 草色新雨中, 松声晚窗里。之前我们学习 Power Query 都是用鼠标就完成了很多复杂的操作。虽然 PowerQuery 已经将大部分常用功能内置成到功能区。基本能完成我们大部分的报表自动化功能。但是总有些复杂的或者个性化的问题是开发团队没有预先想到的,这时我们就需要学习 M 语言。一、M 语言在哪里?M语言的函数公式有三个地...

  • 前言从2020年3月份开始,计划写一系列文档--《小白从零开始学编程》,记录自己从0开始学习的一些东西。第一个系列:python,计划从安装、环境搭建、基本语法、到利用Django和Flask两个当前最热的web框架完成一个小的项目第二个系列:可能会选择Go语言,也可能会选择Vue.js。具体情况待定,拭目以待吧。。。基本概念表达式表...

  • 1.1函数1.1.1什么是函数函数就是程序实现模块化的基本单元,一般实现某一功能的集合。函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能,进行一系列的逻辑运算return 返回值:函数的返回值能表示函数的运行结果或运行状态。1.1.2函数的作用函数是组织好的,可重复使用的,用来...

  • 原标题:基于Python建立深度神经网络!你学会了嘛?图1 神经网络构造的例子(符号说明:上标[l]表示与第l层;上标(i)表示第i个例子;下标i表示矢量第i项)单层神经网络图2 单层神经网络示例神经元模型是先计算一个线性函数(z=Wx+b),接着再计算一个激活函数。一般来说,神经元模型的输出值是a=g(Wx+b),其中g是激活函数(...

  • 在学习MySQL的时候你会发现,它有非常多的函数,在学习的时候没有侧重。小编刚开始学习的时候也会有这个感觉。不过,经过一段时间的学习之后,小编发现尽管函数有很多,但是常用的却只有那几个。今天小编就把常用的函数汇总一下,为大家能够能好的学习MySQL中的函数。MySQL常使用的函数大概有四类。时间函数、数学函数、字符函数、控制函数。让我...