如何重定向正在运行Valgrind的程序的输出?

Mat*_*ski 3 bash valgrind

问题背景:

我运行这样的命令:

$ 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)

有没有更简单的方法可以做到这一点?

doq*_*tor 5

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

  • @MateuszPiotrowski --log-fd是valgrind选项。它告诉valgrind将valgrind的东西输出到指定的文件描述符中。我想其余的应该清楚。 (2认同)

Wil*_*l C 5

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

valgrind [args] --log-file=<filename> ./my_program
Run Code Online (Sandbox Code Playgroud)