web-dev-qa-db-ja.com

フォークされたプロセスをmemcheckするようにvalgrindに指示するにはどうすればよいですか?

xでリークをチェックしたいプロセスvalgrindがあります。問題は、xyによって実行され、yzによって実行されることです。 xyは、環境変数、コマンドラインスイッチ、zに必要なファイルなど、xの環境をセットアップするため、xをスタンドアロンで実行できません。

  1. valgrindzで実行するように指示する方法はありますが、見つかったフォークを追跡して報告する方法はありますか?
  2. valgrindにフォークを追跡するように指示して、xという名前のプロセスについてのみ報告する方法はありますか?
  3. すでに実行中のプロセスにアタッチするようにvalgrindに指示できる方法はありますか?gdbで実行できる方法はありますか?

これが重要かどうかはわかりませんが、SuSE64linuxとvalgrind-2.4.0で実行しています。

ありがとう!

35
Nathan Fellman
  1. Valgrindは、--trace-children=yesオプションが指定されると、フォークされたプロセスに従います。
  2. 適切なフィルターを使用することで、これを実現できるはずです。
  3. いいえ。ValgrindはLD_PRELOADを使用してモジュールのロードコードにフックするため、実行中のプロセスにアタッチすることはできません。
44
JesperE