2017-08-03 33 views
0

親プロセスが子プロセスを起動するマルチプロセスシナリオでmemleakを検出する方法を見つけることができません。 mem leak in both parent & childがあれば、私は非常に奇妙な行動--trace-children = yesのvalgrindによる不正確な結果

valgrind --trace-children=yes --leak-check=full --show-reachable=yes --error-limit=no --log-file=valgrind.log ./parent 

を参照してください、このコマンドで

、私はvalgrind.logが唯一の親のための検出漏れを持って生成された参照してください。 しかし、mem leak only in childのレポートが生成されている場合は正しいです。

サンプルコードになりました。この https://github.com/shrkamat/valg

+0

子供用の個別のログファイルを作成する必要があります。 – Serge

+0

子プロセス用に生成されたログファイルは表示されません。私はvalgrind.logだけを参照して、子プロセスのログの名前になります。 – Kamath

答えて

0

イッツ明確な形式のドキュメントを再現!

--log-file = Valgrindがすべてのメッセージを指定されたファイルに送信するように指定します。ファイル名が空の場合は、中止されます。ファイル名に使用できる特殊なフォーマット指定子は3つあります。 %pが現在のプロセスIDに置き換えられました。これは、複数のプロセスを呼び出すプログラムにとって非常に便利です。警告:--trace-children = yesを使用し、プログラムが複数のプロセスまたはプログラムフォークを起動し、execを後で呼び出さずにこの指定子(または%q指定子)を使用しない場合、Valgrind出力はすべてプロセスは1つのファイルになり、おそらく混乱し、不完全な可能性があります。

+0

もしそれが1つのファイルになったら、 '=== pid ==='のような行の先頭にプロセスIDを付けるべきです。そこにもgrepできるはずです。 – Serge

関連する問題