有没有一种方法可以抑制Valgrind的memcheck,直到达到定义的(以任何方式被我拒绝)稳定状态为止;即应用程序启动已完成,从现在开始,我只想开始跟踪新分配。基于时间或使用Unix信号或类似机制。
答案 0 :(得分:1)
memcheck必须跟踪所有已分配(和释放)的内存:如果仅从某个时间点开始跟踪内存,则在此时间之前对已分配内存的所有访问都将被视为未分配内存。
现在,根据您想要在这种稳定状态之前“避免看到”的内容,您可以做一些事情。
如果您不想在稳定状态之前看到错误,可以致电 您的应用程序启动后,VALGRIND_DISABLE_ERROR_REPORTING 并在达到稳定状态后致电VALGRIND_ENABLE_ERROR_REPORTING。
如果您要查看的是对之后分配多少内存的想法 在这种稳定状态下,您可以在稳定状态为 达到显示内存状态。 之后,您可以执行“增量泄漏搜索”,以显示已分配/释放的内容 自上次泄漏搜索以来。
您可以使用vgdb从外壳程序以交互方式进行操作,也可以使用GDB + vgdb 在程序中放置断点,并在 您的程序。
例如参见http://www.valgrind.org/docs/manual/manual-core-adv.html 和http://www.valgrind.org/docs/manual/mc-manual.html#mc-manual.monitor-commands 有关更多信息。