我运行这样的命令:
$ valgrind ./my_program < 1.in
我得到Valgrind关于泄漏和错误的消息以及my_program的输出stdout和stderr流。
我想重定向/静音my_program的所有流(stdout和stderr)。
运行> /dev/null
不会使my_program的stderr流静音。
正在运行> /dev/null 2> /dev/null
将my_program的所有输出流与Valgrind的消息一起静音。
根据这个帖子:How to redirect Valgrind's output to a file? Valgrind能够使用valgrind --log-file="filename"
将其输出直接流式传输到日志文件。
我想出了像这样的解决方案
$ valgrind --log-file="filename" ./my_program < 1.in && cat filename
有更简单的方法吗?
答案 0 :(得分:4)
要分隔valgrind和应用程序输出,您可以将valgrind输出重定向到另一个文件描述符:
valgrind --log-fd=9 9>>test.log ./app
答案 1 :(得分:4)
这可能有点晚了,但是我在ubuntu上运行valgrind 3.10.1,你可以简单地使用--log-file=<filename>
标志。
I.E.运行:
valgrind [args] --log-file=<filename> ./my_program
答案 2 :(得分:0)
正如我所理解的,这是我发现对我有用的答案:
valgrind --log-fd=9 [program] 9>&1 1>/dev/null 2>/dev/null
这会将 valgrind 消息输出到 stdout,但程序中的 stdout 和 stderr 会转到 /dev/null。重定向的顺序很重要,如 here 所述。
“-q”选项也将 valgrind 限制为仅出错。