抑制源自 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 中特定库的所有错误的主要内容,如果未能解决你的问题,请参考以下文章

告诉 valgrind 为文件生成抑制语句

如何抑制来自 gpgme 的 valgrind 警告?

如何抑制源自宏的 Clippy 警告?

如何在 Visual Studio 2008 中抑制特定的 CSS 2.0 验证错误?

Valgrind:禁用条件跳转(或整个库)检查

如何在以下批处理文件代码中抑制错误流