0

このデーモンの例http://www.itp.uzh.ch/~dpotter/howto/daemonizeのコードに基づいて、Linux デーモン (単一のフォークを使用してデーモンにする) である C++ アプリがあります。私はvalgrindでメモリリークを見つけようとしています:

/usr/bin/valgrind.bin --suppressions=/usr/lib/valgrind/debian-libc6-dbg.supp --tool=memcheck --child-silent-after-fork=no --trace-children=yes --leak-check=full --show-reachable=yes /usr/sbin/<my daemon>

ただし、アプリケーションがまだ子プロセスで動作している間に、最初のプロセスが終了した直後に valgrind が終了します。初期プロセスを終了するコードをコメントアウトすると、valgrind は引き続き機能します。しかし、それはきれいな解決策ではありません。それなしでvalgrindを機能させ続けるにはどうすればよいですか?

4

1 に答える 1

0

Valgrind のよくある質問では、既に実行中のプロセスにアタッチすることはできないと具体的に述べています。fork() では、インストルメンテーションの設定もすべて失われると思います。
彼らは非常に複雑に聞こえる回避策について言及していますが(here)、デーモン化しないだけでなく、望ましくない複雑さが増すと思います。

于 2012-06-20T09:36:03.703 に答える