1

我有一个与网络相关的应用程序,它使用我需要调试的 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
}

这似乎根本没有压制任何东西。有什么方法可以防止来自特定库的错误扩散,所以我不必拥有这么大的抑制文件?

4

1 回答 1

0

用你自己的类包装这个库,并在 try catch 块中做所有事情。它使您可以选择忽略错误或重试方法调用。

于 2013-03-10T00:41:47.790 回答