代码之家  ›  专栏  ›  技术社区  ›  Kamath

valgrind的错误结果--跟踪子项=是

  •  0
  • Kamath  · 技术社区  · 7 年前

    我不知道如何在多进程场景中检测到memleaks,其中子进程由父进程启动。

    有了这个命令,我看到了非常奇怪的行为

    valgrind --trace-children=yes --leak-check=full --show-reachable=yes --error-limit=no --log-file=valgrind.log ./parent
    

    如果有 mem leak in both parent & child valgrind.log 仅为父级检测到泄漏。 mem leak only in child 生成的报告正确无误。

    复制此的示例代码 https://github.com/shrkamat/valg

    1 回复  |  直到 7 年前
        1
  •  0
  •   Kamath    7 年前

    现在从文档中看清楚了!

    --日志文件= 指定Valgrind应将其所有消息发送到指定文件。如果文件名为空,则会导致中止。文件名中可以使用三种特殊的格式说明符。 %p替换为当前进程ID。这对于调用多个进程的程序非常有用。警告:如果您使用--trace children=yes,并且您的程序调用多个进程或程序分叉而不调用exec,并且您不使用此说明符(或下面的%q说明符),那么所有这些进程的Valgrind输出将进入一个文件,可能会混乱,也可能不完整。