产生内存泄漏的抑制

时间:2013-06-18 02:12:53

标签: valgrind error-suppression

我想要压制Valgrind报告我正在使用的库中一些“绝对丢失”的内存。我尝试了valgrind --gen-suppressions=yes ./a,但它只提示错误,例如“条件跳转或移动取决于未初始化的值”。

有没有办法为直接内存泄漏产生抑制?如果没有,难以手工编写吗? Valgrind的手册似乎不鼓励它,至少是因为错误。

4 个答案:

答案 0 :(得分:2)

要提示您没有产生错误的泄漏,您必须运行

valgrind --leak-check=full --gen-suppressions=yes ./a 

答案 1 :(得分:0)

使用--gen-suppressions=all--log-file=memcheck.log选项运行valgrind,并手动将记录的抑制值复制/粘贴到抑制文件中。

valgrind --leak-check=full --gen-suppressions=all --log-file=memcheck.log ./a 

如果您发现输出与应用程序输出混合,则将valigrind输出重定向到单独的文件描述符:--log-fd=9 9>>memcheck.log

valgrind --leak-check=full --gen-suppressions=all --log-fd=9 ./a  9>>memcheck.log

答案 2 :(得分:0)

有一个页面介绍了如何根据错误生成此类文件 https://wiki.wxwidgets.org/Valgrind_Suppression_File_Howto

它并不完美,但你可以从它开始

答案 3 :(得分:-2)

你可以自己write a suppression file(但这似乎并不明显):

--suppressions=<filename> [default: $PREFIX/lib/valgrind/default.supp]

如果问题是要停用整个库,请参阅this

Valgrind的man page