或者最好是所有的人而不是我的代码?我的程序使用Gtk,Loudmouth和其他一些东西,而这两个(以及它们后面的一些libgcrypto,libssl)自己造成了很多错误,我无法检测到我自己的错误。是否有可能让valgrind忽略比我自己的代码更深的东西?是否有可能让valgrind忽略某些库?
回答
您可以为库的错误生成压制,但我认为您不能一般排除这些库。
此外,很难自动知道库中的内存错误是否是由代码中的问题引起的。
http:// valgrind。org/docs/manual/manual-core.html#manual-core.suppress这是valgrind错误抑制信息的链接。 – blwy10 2010-07-04 13:35:28
特别是对于OpenSSL,这非常困难。 SSL加密密钥部分基于未初始化的堆栈垃圾,这意味着所有解密的数据也被污染。这种污染往往会超越OpenSSL本身。
用“PURIFY”选项编译OpenSSL可能对此有所帮助。不幸的是,由于主要的Linux发行版的一些糟糕的行动,这不太可能成为默认。
一个非常钝的解决方法是memcheck的--undef-value-errors=no
选项。
不错。忽略undef-values实际上使我的特殊情况成为我的特例,我从一个库(不是OpenSSL)中“检测到超过10000000个错误”,然后分析其余代码。 – 2014-06-12 11:31:10
假设你正在运行的MEMCHECK工具,并要忽略在泄漏错误libcrypto只有,你可以把抑制,如:
{
ignore_libcrypto_conditional_jump_errors
Memcheck:Leak
...
obj:*/libcrypto.so.*
}
...到一个文件中,并通它到valgrind
与--suppressions=*FILENAME*
。
要忽略泄漏误差所有共享库任何LIB目录下(/lib目录,/lib64下,/usr/lib目录,在/ usr/lib64下,... ):
{
ignore_unversioned_libs
Memcheck:Leak
...
obj:*/lib*/lib*.so
}
{
ignore_versioned_libs
Memcheck:Leak
...
obj:*/lib*/lib*.so.*
}
这是不可能的,但你可能需要添加目录模式的其它变化中占了X11的位置和GTK库。
请注意,这样会忽略由您编写的由库调用的任何回调引起的错误。在这些回调捕获错误可能几乎加上:
{
ignore_unversioned_libs
Memcheck:Leak
obj:*/lib*/lib*.so
...
obj:*/lib*/lib*.so
}
{
ignore_versioned_libs
Memcheck:Leak
obj:*/lib*/lib*.so.*
...
obj:*/lib*/lib*.so.*
}
...但通过使用Valgrind的的malloc库这表明在调用错误。由于valgrind malloc直接注入到程序文本中 - 没有作为动态库加载 - 它以与您自己的代码相同的方式出现在堆栈中。这使Valgrind能够跟踪分配情况,但也使得难以完全按照您的要求进行操作。
仅供参考:我正在使用valgrind 3.5。
- 1. 是否有可能让boto3忽略签名过期错误?
- 2. 是否有可能让NSwag忽略控制器?
- 3. 是否有可能让Symfony忽略URL中的双斜杠
- 4. 是否有可能让文件忽略htaccess文件?
- 5. Eclipse STS svn svn:忽略,不让我忽略某些文件
- 6. 是否有可能让oracle数据库程序忽略提交语句?
- 7. 是否可以忽略“scanf_s”中的某些字符?
- 8. 是否可以忽略某些单元测试?
- 9. 是否有可能让git在合并或重新绑定时忽略某些行?
- 10. 是否有可能让某些URL绕过wwwhisper
- 11. 有没有办法让git忽略文件的某些行?
- 12. 有没有办法让*命令忽略某些条目?
- 13. 有没有办法让控制台忽略某些错误?
- 14. 是否有可能让javadoc忽略所有没有文档的类?
- 15. 是否有可能让浏览器忽略/禁用所有媒体查询?
- 16. 如何让Vera ++忽略某些/所有规则的代码段?
- 17. 总结忽略某些列
- 18. Minicom忽略某些字符
- 19. 忽略某些字符串
- 20. Werror忽略某些文件
- 21. Subversion忽略某些文件
- 22. window.getSelection()忽略某些标签
- 23. httpd.conf:忽略某些目录?
- 24. 春忽略某些网址
- 25. 忽略某些节点
- 26. 使用svn:忽略忽略某些文件的所有内容
- 27. 是否可以忽略TextBox?
- 28. 是否有可能让Solr的DataImportHadler忽略空字符串的字段?
- 29. 是否有可能让SVN忽略字符大小写的变化?
- 30. 是否有可能让gcc忽略未知的命令行选项?
+1,我有同样的麻烦。 NVIDIA的GL库基于未初始化的内存执行有条件的跳转,并且'std :: string'也一直引发误报(“可能丢失”)。 – Thomas 2010-07-04 11:31:33