在使用Valgrind工具时,我需要记录valgrind工具生成的详细信息。我怎么能做到这一点?我尝试了类似的东西,
valgrind a.out | test
和
valgrind a.out > test
它只给出了程序的输出而不是valgrind内存错误,泄漏信息。如果程序不需要用户交互(即提供输入),即使我是这样的。如果程序需要用户输入,即使该东西本身也不起作用。
我该怎么做?
答案 0 :(得分:387)
valgrind --log-file="filename"
答案 1 :(得分:75)
默认情况下,Valgrind将其输出写入stderr。所以你需要做一些事情:
valgrind a.out > log.txt 2>&1
或者,你可以告诉Valgrind写别的地方;见http://valgrind.org/docs/manual/manual-core.html#manual-core.comment(但我从未尝试过这个)。
答案 2 :(得分:8)
如果您只想用较少的日志读取日志,也可以设置选项--log-fd。 例如:
valgrind --log-fd=1 ls | less
答案 3 :(得分:0)
除了其他答案(特别是Lekakis之外),Valgrind's user manual所详细说明的选项--log-file=
中也可以使用某些字符串替换。
在撰写本文时,有四个替代品可供选择:
%p
:打印当前进程ID
valgrind --log-file="myFile-%p.dat" <application-name>
%n
:打印当前进程唯一的文件序列号
valgrind --log-file="myFile-%p-%n.dat" <application-name>
%q{ENV}
:打印环境变量ENV
的内容
valgrind --log-file="myFile-%q{HOME}.dat" <application-name>
%%
:打印%
valgrind --log-file="myFile-%%.dat" <application-name>