2011-12-02 1224 views
108

在使用Valgrind工具時,我需要記錄由valgrind工具生成的詳細信息。我怎麼能做到這一點?我想是這樣,如何將Valgrind的輸出重定向到文件?

valgrind a.out | test 

valgrind a.out > test 

這給了剛剛程序的輸出,而不是Valgrind的內存錯誤,泄露信息。即使我喜歡這個,如果該程序不需要用戶交互(即提供輸入)。如果該程序需要用戶輸入,即使該東西本身也無法工作。

我該怎麼做?

+1

您是否試過重定向stout和stderr? 'valgrind a.out&>文件' – sidyll

回答

335
valgrind --log-file="filename" 
+0

這是完美! – Yash

+20

這應該是被接受的答案。 – SeMeKh

69

默認情況下,Valgrind將其輸出寫入stderr。因此,您需要執行以下操作:

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

或者,您可以告訴Valgrind在其他地方寫入;見http://valgrind.org/docs/manual/manual-core.html#manual-core.comment(但我從來沒有嘗試過)。

+2

非常感謝:)。有效。你能告訴我什麼是「2>&1」嗎? – Dinesh

+7

@Dinesh:我建議閱讀http://www.gnu.org/software/bash/manual/bashref.html#Redirections,它描述了做重定向的奇怪的Bash語法! –

+14

注意:這個建議還會將'a.out'的輸出發送到同一個日誌文件。如果要將valgrind的輸出保存到日誌文件*,而不使用*'a.out',則應使用Lex建議的'--log-file'選項。 – edam

6

如果您只是想用較少的讀取日誌,您還可以設置選項--log-fd。 例如:

valgrind --log-fd=1 ls | less 
+0

謝謝,這節省了我的硬盤! –