Valgrind:在启动期间抑制内存检查

Valgrind: suppress memcheck during startup

有没有办法抑制 Valgrind 的内存检查,直到达到定义的(由我以任何方式发出信号)稳定状态;即应用程序启动完成,我只想从现在开始跟踪新的分配。基于时间或使用 Unix 信号或类似机制。

memcheck 必须跟踪所有已分配(和释放)的内存:如果它只跟踪某个时间点的内存,那么所有对该时间之前分配的内存的访问都将被视为访问未分配的内存。

现在,根据您想在这个稳定状态之前'avoid seeing'做什么,您可以做一些事情。

如果你不想在稳定状态之前看到错误,你可以调用 VALGRIND_DISABLE_ERROR_REPORTING 一旦您的应用程序启动, 并在达到稳定状态时调用 VALGRIND_ENABLE_ERROR_REPORTING。

如果你想知道在之后分配了多少内存 这个稳定状态,当稳定状态是 到达以显示内存状态。 之后,你可以做一个 "delta leak search" 来显示 allocated/freed 自上次泄漏搜索以来。

您可以通过 shell、使用 vgdb 或使用 GDB+vgdb 以交互方式执行此操作 在您的程序中放置断点并在精确的位置执行上述操作 你的程序。

参见例如http://www.valgrind.org/docs/manual/manual-core-adv.htmlhttp://www.valgrind.org/docs/manual/mc-manual.html#mc-manual.monitor-commands 获取更多信息。