2011-12-02 19 views
108

Valgrindツールを使用している間、私はvalgrindツールによって生成された詳細を記録する必要があります。どうすればそれを達成できますか?私はそれは、情報を漏らすだけで、プログラムの出力ではなくvalgrindのメモリエラーを与え、 Valgrindの出力をファイルにリダイレクトする方法は?

valgrind a.out > test 

valgrind a.out | test 

をのようなものを試してみました。プログラムでユーザーとのやり取り(つまり入力)が必要ない場合でも、私はこのようになっています。プログラムがユーザ入力を必要とする場合でも、それ自体は動作しません。

どうすればいいですか?

+1

stoutとstderrの両方をリダイレクトしましたか? 'valgrind a.out&> file' – 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'の出力を同じログファイルに送ります。もしあなたが* a.outを使わずにvalgrindの出力をログファイル*に保存したいのであれば、Lexが提案する '--log-file'オプションを使うべきです。 – edam

6

ログを少なくして読みたい場合は、--log-fdオプションを設定することもできます。 例:

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

ありがとう、これは私のハードディスクを保存! –

関連する問題