我有一个网络相关的应用程序,它使用我需要调试的gnutls,但是一些未初始化的内存错误导致整个应用程序的扩散,使得valgrind几乎无用。
使用--track-origin = 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手动抑制这些错误,但似乎我最终会抑制构建在gnutl之上的应用程序的大部分内容中的错误。
我也尝试过:
{
gnutls
Memcheck:Cond
obj:/usr/local/lib/libgnutls.so.28.15.0
}
这似乎根本没有压制任何东西。有没有办法防止特定库中的错误扩散,所以我不必有这么大的抑制文件?
答案 0 :(得分:0)
用自己的类包装库并在try catch块中执行所有操作。它为您提供了忽略错误或重试方法调用的选项。