是否可以在 valgrind 中设置 bseline 内存使用情况以进行泄漏检测?

问题描述

有没有办法从我的代码内部告诉 valgrind 何时开始以及何时停止检查内存泄漏?

我正在使用旧测试框架,该框架必须与我的测试程序链接才能运行。该框架存在内存泄漏 - valgrind 显示大约 50KB 的内存尚未释放,但可以通过启发式访问。这很烦人,因为我必须记住这个数字才能查看我的代码泄漏了多少内存。如果我可以告诉 valgrind 在我的第一次测试开始时开始收集内存统计数据,并在最后一次测试结束时停止收集,那将会方便得多。有它的 API 吗?

解决方法

valgrind memcheck 允许进行“差异”泄漏搜索。差分泄漏搜索报告先前泄漏搜索与当前情况之间的差值。

您可以使用带有 vgdb 的监视器命令,从 shell 或从 gdb 执行此类差异泄漏搜索。见https://www.valgrind.org/docs/manual/mc-manual.html#mc-manual.monitor-commands

您还可以使用您程序中的客户端请求 VALGRIND_DO_CHANGED_LEAK_CHECK,请参阅 https://www.valgrind.org/docs/manual/mc-manual.html#mc-manual.clientreqs