如何重定向程序 Valgrind is 运行 on 的输出?

How to redirect the output of the program Valgrind is running on?

问题背景:

我运行这样的命令:

$ valgrind ./my_program < 1.in

而且我收到了 Valgrind 关于泄漏和错误的消息以及 my_program.

的输出 stdout 和 stderr 流

问题:

我想要 redirect/mute my_program 的所有流(stdout 和 stderr)。

到目前为止我学到了什么:

可能的解决方案:

我想出了这样的解决方案

$ valgrind --log-file="filename" ./my_program < 1.in && cat filename

有更简单的方法吗?

要将 valgrind 和应用程序输出分开,您可以将 valgrind 输出重定向到另一个文件描述符: valgrind --log-fd=9 9>>test.log ./app

这可能有点晚了,但我 运行ning valgrind 3.10.1 on ubuntu,你可以简单地使用 --log-file=<filename> 标志。 IE。 运行:

valgrind [args] --log-file=<filename> ./my_program

根据我对问题的理解,这是我找到的适合我的答案:

valgrind --log-fd=9 [program]  9>&1 1>/dev/null 2>/dev/null

这会将 valgrind 消息输出到 stdout,但程序的 stdout 和 stderr 会转到 /dev/null。重定向的顺序很重要,如 here.

所述

“-q”选项也将限制 valgrind 仅出错。