Redirect 如何重定向Valgrind';输出到文件?
在使用Valgrind工具时,我需要记录Valgrind工具生成的详细信息。我怎样才能做到这一点?我试过这样的方法Redirect 如何重定向Valgrind';输出到文件?,redirect,valgrind,Redirect,Valgrind,在使用Valgrind工具时,我需要记录Valgrind工具生成的详细信息。我怎样才能做到这一点?我试过这样的方法 valgrind a.out | test 及 它只给出程序的输出,而不是valgrind内存错误、泄漏信息。如果程序不需要用户交互(即提供输入),我也会这样做。如果程序需要用户输入,即使它本身也无法工作 我该怎么做呢?默认情况下,Valgrind将其输出写入stderr。所以你需要做一些类似的事情: valgrind a.out > log.txt 2>&
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=
中使用一些字符串替换,如中所述
在编写本报告时,有四名替代人员:
:打印当前进程ID%p
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”
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