代码之家  ›  专栏  ›  技术社区  ›  Laurynas Biveinis

Valgrind:抑制内存泄漏报告iff程序崩溃

  •  0
  • Laurynas Biveinis  · 技术社区  · 7 年前

    假设我们已经配置了最大诊断功能的自动Valgrind测试设置( --leak-check=yes --track-origins=yes 然而,在一些测试中,由于一些不确定的错误,valgrinded进程可能会因SIGSEGV而崩溃。在这种情况下,导致SIGSEGV的即时诊断是有用的,但Valgrind并没有就此停止,而是将每一个活动内存分配作为泄漏转储,成千上万个泄漏—这在随机SIGSEGV的情况下是无用的。

    有没有办法将Valgrind配置为

    • 打印程序执行过程中的任何错误,不要中止;
    • 在正常退出时,转储内存泄漏;
    • 关于SIGSEGV/SIGABRT/SIGILL/SIG。。。退出,不转储内存泄漏?

    编辑:这已于2011年记录在Valgrind bug tracker上: https://bugs.kde.org/show_bug.cgi?id=265371

    1 回复  |  直到 7 年前
        1
  •  1
  •   phd    7 年前

    valgrind泄漏搜索只能为“程序正常退出”激活 并取消“紧急出口”的激活。

    您可以使用--vgdb error=0来获得此结果, 然后(使用脚本):使用gdb+vgdb连接到valgrind gdbserver, 在gdb中捕获您想要的信号,并让gdb在 收到信号:valgrind gdbserver有一个命令v.kill,该命令将 在不进行通常的“生命终结”泄漏搜索的情况下退出valgrind。