我运行这样的命令:
$ valgrind ./my_program < 1.in
Run Code Online (Sandbox Code Playgroud)
我得到Valgrind关于泄漏和错误的消息,以及my_program的输出stdout和stderr流。
我想重定向/静音my_program的所有流(stdout和stderr)。
运行> /dev/null不会使my_program的stderr流静音。
运行> /dev/null 2> /dev/null将my_program的所有输出流与Valgrind的消息一起静音。
根据此主题:如何将Valgrind的输出重定向到文件?Valgrind可以使用将输出直接流式传输到日志文件valgrind --log-file="filename"。
我想出了这样的解决方案
$ valgrind --log-file="filename" ./my_program < 1.in && cat filename
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法可以做到这一点?
要分离valgrind和应用程序输出,可以将valgrind输出重定向到另一个文件描述符:
valgrind --log-fd=9 9>>test.log ./app
这可能有点晚了,但我在 ubuntu 上运行 valgrind 3.10.1,您可以简单地使用该--log-file=<filename>标志。IE运行:
valgrind [args] --log-file=<filename> ./my_program
Run Code Online (Sandbox Code Playgroud)