valgrind使用--trace-children = yes的结果不正确

时间:2017-08-03 15:26:37

标签: c++ c valgrind

我无法弄清楚如何在多进程场景中检测到memleak,其中子进程是由父进程启动的。

使用此命令,我看到非常奇怪的行为

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 个答案:

答案 0 :(得分:0)

现在文档清晰了!

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