如何重定向到一个文件瓦尔恩的输出?

在使用瓦尔研磨工具时,我需要记录瓦尔研磨工具生产的详细信息。我怎么才能做到呢?我试着说,

 valgrind a.out | test

还有

 valgrind a.out > test

它只给出了程序的输出,而没有给出瓦尔格林内存错误,泄漏信息。如果程序不需要用户交互(即输入) ,我也会这样做。如果程序需要用户输入,即使那个东西本身也不会工作。

我怎么能这么做?

121679 次浏览

在默认情况下,Val哪写它的输出到 stderr:

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

或者,您可以告诉瓦尔格林在其他地方编写代码; 请参阅 http://valgrind.org/docs/manual/manual-core.html#manual-core.comment(但我从未尝试过这样做)。

valgrind --log-file="filename"

还可以设置选项—— log-fd,如果只想用 less 读取日志。 例如:

valgrind --log-fd=1 ls | less

除了其他的答案(特别是通过 Lekakis) ,一些字符串替换也可以在选项 --log-file=中使用,如 瓦尔冈的用户手册中所阐述的。

在编写本报告时,有四个替代品:

  • 打印当前进程 ID
    • valgrind --log-file="myFile-%p.dat" <application-name>
  • %n: 为当前进程打印唯一的文件序列号
    • valgrind --log-file="myFile-%p-%n.dat" <application-name>
  • 打印出环境变量的内容
    • valgrind --log-file="myFile-%q{HOME}.dat" <application-name>
  • 指纹
    • valgrind --log-file="myFile-%%.dat" <application-name>