抑制源自 valgrind 中特定库的所有错误
Posted
技术标签:
【中文标题】抑制源自 valgrind 中特定库的所有错误【英文标题】:Suppressing all errors originating in a particular library in valgrind 【发布时间】:2013-03-10 00:34:13 【问题描述】:我有一个网络相关的应用程序,它使用了我需要调试的 gnutl,但是一些未初始化的内存错误导致整个应用程序的扩散,这使得 valgrind 几乎无用。
使用 --track-origins=yes 清楚地表明错误源自 gnutls:
==1369== Uninitialised value was created by a stack allocation
==1369== at 0x5FE39B7: ??? (in /usr/local/lib/libgnutls.so.28.15.0)
我尝试使用 --gen-suppressions=all 手动抑制这些错误,但似乎我最终会在基于 gnutls 构建的大部分应用程序中抑制错误。
我也试过了:
gnutls
Memcheck:Cond
obj:/usr/local/lib/libgnutls.so.28.15.0
这似乎根本没有压制任何东西。有什么方法可以防止来自特定库的错误扩散,所以我不必拥有这么大的抑制文件?
【问题讨论】:
【参考方案1】:用你自己的类包装这个库,然后在 try catch 块中做所有事情。它使您可以选择忽略错误或重试方法调用。
【讨论】:
try/catch 块如何影响 valgrind 检测到的条件?以上是关于抑制源自 valgrind 中特定库的所有错误的主要内容,如果未能解决你的问题,请参考以下文章