我正在尝试在我正在开发的程序上使用 Valgrind,但 Valgrind 为我正在使用的库之一生成一堆错误。我希望能够告诉它抑制涉及该库的所有错误。我可以为抑制文件提出的最接近的规则是
{
rule name
Memcheck:Cond
...
obj:/path/to/library/thelibrary.so
}
然而,这并不能完全完成工作。我必须为出现的每种抑制类型(Cond、Value4、Param 等)创建其中一个,并且似乎仍然会错过一些在堆栈跟踪中包含库的错误。
有没有办法给 Valgrind 一个单一的抑制规则,让它完全忽略某个特定的库?即使没有办法制定这样一个涵盖所有抑制类型的规则,是否至少有一种方法可以创建一个忽略特定库中特定抑制类型的所有错误的规则?
对于大多数抑制类型,您可以省略通配符,如下所示:
{
name
Memcheck:Cond
obj:/path/to/lib/lib.so.10.1
}
{
name
Memcheck:Free
obj:/path/to/lib/lib.so.10.1
}
{
name
Memcheck:Value8
obj:/path/to/lib/lib.so.10.1
}
请注意,您必须单独列出每种类型的错误,不能使用通配符。您还必须列出库的完整路径名(如 valgrind 所示,带有版本号等任何“装饰”)。
此外,泄漏的处理方式也不同——对于那些您需要如下所示的东西的人:
{
name
Memcheck:Leak
fun:*alloc
...
obj:/path/to/lib/lib.so.10.1
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)