Redirect 如何重定向Valgrind';输出到文件?

Redirect 如何重定向Valgrind';输出到文件?,redirect,valgrind,Redirect,Valgrind,在使用Valgrind工具时,我需要记录Valgrind工具生成的详细信息。我怎样才能做到这一点?我试过这样的方法 valgrind a.out | test 及 它只给出程序的输出,而不是valgrind内存错误、泄漏信息。如果程序不需要用户交互(即提供输入),我也会这样做。如果程序需要用户输入,即使它本身也无法工作 我该怎么做呢?默认情况下,Valgrind将其输出写入stderr。所以你需要做一些类似的事情: valgrind a.out > log.txt 2>&

在使用Valgrind工具时,我需要记录Valgrind工具生成的详细信息。我怎样才能做到这一点?我试过这样的方法

 valgrind a.out | test

它只给出程序的输出,而不是valgrind内存错误、泄漏信息。如果程序不需要用户交互(即提供输入),我也会这样做。如果程序需要用户输入,即使它本身也无法工作


我该怎么做呢?

默认情况下,Valgrind将其输出写入stderr。所以你需要做一些类似的事情:

valgrind a.out > log.txt 2>&1

或者,你可以让Valgrind在别的地方写;请参阅(但我从未尝试过此操作)。

如果您只想用更少的内存读取日志,还可以设置选项--logfd。 例如:

valgrind --log-fd=1 ls | less

除了其他答案(特别是by),还可以在选项
--log file=
中使用一些字符串替换,如中所述

在编写本报告时,有四名替代人员:

  • %p
    :打印当前进程ID
    • valgrind--log file=“myFile-%p.dat”
  • %n
    :打印当前进程唯一的文件序列号
    • valgrind--log file=“myFile-%p-%n.dat”
  • %q{ENV}
    :打印环境变量
    ENV
    • valgrind--log file=“myFile-%q{HOME}.dat”
  • %%
    :打印
    %%
    • valgrind--log file=“myFile-%%.dat”

您是否尝试重定向stout和stderr
valgrind a.out&>文件
非常感谢:)。成功了。你能告诉我“2>&1”是怎么回事吗?@Dinesh:我建议阅读,它描述了用于重定向的奇怪Bash语法!注意:此建议还将
a.out
的输出发送到同一日志文件。如果您想将valgrind的输出保存到日志文件中而不使用
a.out
,则应使用Lex建议的
--log file
选项。这也是调试内存泄漏的一个很好的答案!如果您想通过管道将输出传输到另一个命令:
valgrind./struct-v--leak check=full 2>&1 | nc-N paste.ubuntu.ir 1337
这只保存stderr,是否可以将stderr和stdout以与在终端中写入相同的顺序保存到同一文件中(即,保持测试程序的输出与valgrind报告的错误之间的一致性)?
valgrind --log-file="filename"
valgrind --log-fd=1 ls | less