2016-10-23 9 views
-2

私はWindows 2008R2上でC++のプロセスを持っていましたが、いくつかのtheadsがあります。プロセスの起動時に、スレッドの1つが終了する可能性があります。私は、何が起こるか、どのような提案を検出する方法を取得していないのですか?Windowsでスレッドが終了する理由を検出するにはどうすればよいですか?

私の調査に基づいて、スレッドは例外なく終了します。 nullポインターにアクセスすると同様の問題が発生する可能性がありますが、そのプロセスでこのような位置は見つかりませんでした。実際には、プロセスがちょうどクラッシュしたら、ダンプファイルを取得することができます。何も起こらず、スレッドが1つだけ終了します。

私はツールユーザーモードのプロセスダンパーを試しましたが、このプロセスが動作しているWindowsバージョンでは動作しません。 スレッド終了イベントをチェックするためにツールプロセスモニタを試しましたが、プロセスを何度も開始してこの問題を再現しようとすると、プロセスモニタが例外をスローします。

ありがとうございます。

+0

対抗:準備ツールがない場合は、独自のツールを作成できると思いますか? –

+2

スレッド関数内にこの関数のエントリと終了を記録するコードを追加できますか? –

+0

プロセスをデバッガで起動しようとしましたか?スレッド出口コードをこのようにしてください。 – shrike

答えて

0

最後に根本原因が見つかりました - 文字列は複数のスレッドによってアクセスされ、1つのスレッドはただ終了します。文字列はスレッドセーフではありません。

プロセスモニタは、強力なホスト上でスレッド終了コールスタックを取得するのに役立ちました。これにより根本的な原因が解消されます。

ご意見ありがとうございます。

関連する問題