6

他の何千ものスレッドを生成するプログラムでvalgrindmemcheckを実行しています。

他のスレッドはエラーを生成しません、そして私はそれらに何が起こるかを気にしません。

ただし、Valgrindは、新しいスレッドが生成されるたびに/tmpで名前付きパイプを開くことを要求します。これは無駄であるだけでなく、実際にvalgrindを壊します。valgrindがそれ自体をクリーンアップしない場合があり、同じpidを持つ将来の子(後でアクティブになる)は、valgrindが正しい名前(既に存在する)のパイプを作成できないため、スポーンに失敗します。

Valgrindがこれらすべてのパイプを作成するのを防ぐにはどうすればよいですか!?!

編集:私がすでに試したフラグ:

--child-silent-after-fork = yes

そして私がすでに除外したこと:

--track-children = no(デフォルト値はno)。

4

2 に答える 2

3

私自身の質問に答えてすみません。文書化のためだけに。

フラグを付けて実行する:

--vgdb=no

これは、フラグなしでどこにでもパイプを吐き出すことを示していないため、manページに適切に文書化されていませんが、それがそれを行う理由です。

于 2012-10-19T11:56:49.873 に答える
1

可能であれば、コマンドライン引数を使用してスレッドの生成をオフにできるように、初期プログラムを調整してください。スレッドスポーンを削除して、結果に対してvalgrindを実行します。

于 2012-10-18T20:39:01.090 に答える