【问题标题】:Valgrind: suppress memory memory leak reporting iff program crashedValgrind:如果程序崩溃,则抑制内存泄漏报告
【发布时间】:2018-11-28 17:59:11
【问题描述】:

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

有没有办法将 Valgrind 配置为

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

编辑:这已于 2011 年在 Valgrind 错误跟踪器中记录:https://bugs.kde.org/show_bug.cgi?id=265371

【问题讨论】:

    标签: valgrind memcheck


    【解决方案1】:

    valgrind 泄漏搜索只能为“程序正常退出”激活 并因“崩溃退出”而停用。

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

    【讨论】:

      猜你喜欢
      • 2020-09-17
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      相关资源
      最近更新 更多