如何将Valgrind的输出重定向到文件?


147

使用Valgrind工具时,我需要记录valgrind工具产生的详细信息。我该怎么做?我尝试过类似

 valgrind a.out | test

 valgrind a.out > test

它仅给出程序的输出,而不给出valgrind内存错误和泄漏信息。如果程序不需要用户交互(即提供输入),即使我也变得这样。如果程序需要用户输入,那么该东西本身将无法工作。

我怎样才能做到这一点?


2
您是否尝试过同时重定向stout和stderr?valgrind a.out &> file
sidyll '12

Answers:



78

默认情况下,Valgrind将其输出写入stderr。因此,您需要执行以下操作:

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

或者,您可以告诉Valgrind在其他地方写东西。请参阅http://valgrind.org/docs/manual/manual-core.html#manual-core.comment(但我从未尝试过)。


4
非常感谢 :)。有效。您能告诉我“ 2>&1”是什么意思吗?
Dinesh

10
@Dinesh:我建议阅读gnu.org/software/bash/manual/bashref.html#Redirections,它描述了执行重定向的奇怪的Bash语法!
奥利弗·查尔斯沃思

16
注意:该建议还将把a.out的输出发送到同一日志文件。如果要将valgrind的输出保存到不带 a.out s 的日志文件中,则应使用--log-fileLex建议的选项。
edam

这也是调试内存泄漏的好方法!
免费网址

10

如果您只想少读一些日志,也可以设置选项--log-fd。例如 :

valgrind --log-fd=1 ls | less
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.