Valgrind:当程序崩溃时,禁止报告内存泄漏报告

时间:2018-11-28 17:59:12

标签: valgrind memcheck

假设我们已经自动化了Valgrind测试设置,并配置了最大的诊断程序(--leak-check=yes --track-origins=yes等。)但是,在某些测试中,由于某些不确定的错误,SIGGSGV可能会使valgrinded进程崩溃。在那种情况下,导致SIGSEGV的即时诊断很有用,但是Valgrind不会停在那里并将每个活动内存分配作为泄漏转储,成千上万的泄漏-在随机SIGSEGV的情况下是没有用的。

是否可以将Valgrind配置为

  • 在程序执行过程中打印任何错误,不要中止;
  • 在定期退出时,转储内存泄漏;
  • 在SIGSEGV / SIGABRT / SIGILL / SIG ...出口上,不转储内存泄漏吗?

编辑:2011年,此问题已记录在Valgrind错误跟踪程序中:https://bugs.kde.org/show_bug.cgi?id=265371

1 个答案:

答案 0 :(得分:1)

valgrind泄漏搜索无法仅针对“程序正常退出”被激活 并为“崩溃退出”停用。

您也许可以使用--vgdb-error = 0获得此结果, 然后(使用脚本):使用gdb + vgdb连接到valgrind gdbserver, 在gdb中捕获您想要的信号,并在gdb杀死进程时 接收到信号:valgrind gdbserver具有命令v.kill,该命令将 使valgrind退出而不执行其通常的“寿命终止”泄漏搜索。