valgrind memorycheck基本使用

Reference:

http://valgrind.org/docs/manual/mc-manual.html : valgrind command line usage

https://wiki.wxwidgets.org/Valgrind_Suppression_File_Howto : 如何写一个suppression file


命令解析

<span style="font-size:18px;">valgrind --memcheck:leak-check=full --gen-suppressions=all --suppressions=qt.supp --suppressions=extern.supp --show-leak-kinds=definite,possible --errors-for-leak-kinds=definite,possible --log-file=gui-qt.log ./my_exec
</span>


这里 --gen--suppressions=all 每一个error后面都会跟随一个suppression, 用来过滤掉这个error.

--suppressions=qt.supp  用来过滤掉qt库中的memory 错误. 

--suppressions=extern.supp 用来过滤掉 其他一些库中的memory错误 (我们只关心自己的代码是否有内存泄露等问题)

--show-leak-kinds=definite,possible --errors-for-leak-kinds=definite,possible 只显示definite和possible的内存错误.

--log-file=gui-qt.log 错误信息输出到gui-qt.log


Suppression file

{
   <name>
   Memcheck:Leak
   ...
   obj:xx*.so
   fun:gdk_set_locale
}


名字可以为任意名字(可以重复)

Memcheck 屏蔽的错误种类包括:CondAddr8Value8, and Leak

"..." 通配符任意库或函数

obj:需要屏蔽的库

fun:需要屏蔽的函数

example中的suppression,表示屏蔽掉xx*.so中gdk_set_locale的memory Leak错误.注意fun和obj的冒号后不能有空格.

我的qt.supp:

{
	<QtCore>
	Memcheck:Leak
	...
	obj:/usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.6
}

{
	<QtCore>
	Memcheck:Addr4
	...
	obj:/usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.6
}

{
	<QtCore>
	Memcheck:Addr8
	...
	obj:/usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.6
}


{
	<QtCore>
	Memcheck:Free
	...
	obj:/usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.6
}

{
	<QtGui>
	Memcheck:Leak
	...
	obj:/usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.6
}

{
	<QtGui>
	Memcheck:Addr4
	...
	obj:/usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.6
}

{
	<QtGui>
	Memcheck:Addr8
	...
	obj:/usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.6
}

{
	<QtGui>
	Memcheck:Free
	...
	obj:/usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.6
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值