valgrind 忽略第三方模块

前言

valgrind 是检查内存泄漏的工具。如果我们的程序集成了第三方模块,但又不希望检查他们的内存泄漏问题,可以通过参数指定valgrind忽略他们。

suppressions 参数

suppressions 参数告诉valgrind忽略指定的错误,用法如下

valgrind --leak-check=full --error-exitcode=1 --suppressions=../test/valgrd_ignore.txt  myapp appargs

suppressions 文件内容

suppressions 文件由若干个"{}"段组成,每个段包含3部分内容:

  1. 第一行为过滤描述,随便写
  2. 第二行为忽略的类型,Memcheck有7中类型,分别为Cond,Jump, Param, Free, Overlap, Leak, Value1~16, Addr1~16。
  3. 最后一部分为忽略条件。
{
   ignore_cond_libs
   Memcheck:Cond
   ...
   fun:nginx_main
   ...
}
{
   ignore_leak_libs
   Memcheck:Leak
   ...
   fun:nginx_main
   ...
}

suppressions 的说明参见:http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress

忽略条件

忽略条件可以指定为模块名或者函数名。

...
fun:nginx_main
...

这个条件的意思是指内存泄漏的调用栈中(前面任意个函数,后面任意个函数)包括函数nginx_main

猜你喜欢

转载自my.oschina.net/yumm007/blog/1814537