我想通过我正在使用的库抑制 Valgrind 报告一些“肯定丢失”的内存。我已经尝试过valgrind --gen-suppressions=yes ./a
,但它只提示错误,例如“条件跳转或移动取决于未初始化的值”。
有没有办法为直接的内存泄漏生成抑制?如果没有,手写很难吗?Valgrind 的联机帮助页似乎不鼓励它,至少对于错误而言。
我想通过我正在使用的库抑制 Valgrind 报告一些“肯定丢失”的内存。我已经尝试过valgrind --gen-suppressions=yes ./a
,但它只提示错误,例如“条件跳转或移动取决于未初始化的值”。
有没有办法为直接的内存泄漏生成抑制?如果没有,手写很难吗?Valgrind 的联机帮助页似乎不鼓励它,至少对于错误而言。
要提示未生成错误的泄漏,您必须运行
valgrind --leak-check=full --gen-suppressions=yes ./a
--gen-suppressions=all
使用and选项运行 valgrind --log-file=memcheck.log
,然后手动将记录的抑制复制/粘贴到抑制文件中。
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
有一个页面介绍如何根据您的错误生成这样的文件https://wiki.wxwidgets.org/Valgrind_Suppression_File_Howto
它并不完美,但你可以从它开始