Valgrindの出力をファイルにリダイレクトする方法は?


147

Valgrindツールを使用しているときに、valgrindツールによって生成された詳細をログに記録する必要があります。どうすればそれを達成できますか?私は何かを試しました、

 valgrind a.out | test

そして

 valgrind a.out > test

これは、valgrindメモリエラーではなく、プログラムの出力のみを提供し、情報をリークしました。プログラムがユーザーの操作を必要としない場合(つまり、入力を行う場合)でも、このようになっています。プログラムがユーザー入力を必要とする場合でも、それ自体は機能しません。

これどうやってするの?


2
stoutとstderrの両方をリダイレクトしてみましたか?valgrind a.out &> file
シディル

回答:


415
valgrind --log-file="filename"

1
これはstderrだけを保存します。stderrとstdoutの両方を、ターミナルで書き込まれたのと同じ順序で同じファイルに保存できますか(つまり、テストされたプログラムの出力とvalgrindによって報告されたエラーの間の一貫性を保つため)?
Prokop Hapala、

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 2011

10
@Dinesh:リダイレクトを行うための奇妙なBash構文を説明するgnu.org/software/bash/manual/bashref.html#Redirectionsを読むことをお勧めします!
オリバーチャールズワース2011

16
注:この提案ではa.out、の出力も同じログファイルに送信されます。valgrindの出力をなしで ログファイルに保存したい場合は、Lexが提案しa.out--log-fileオプションを使用する必要があります。
edam 2013年

これは、メモリリークをデバッグするための素晴らしい答えでもあります。
無料のURL、2017年

10

lessでログを読みたいだけなら、オプション--log-fdを設定することもできます。例えば ​​:

valgrind --log-fd=1 ls | less
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.