3

私は非常に奇妙な状況にあります。C++ で Visual Studio 2010 によってプログラムされた IOCP サーバー プログラムを実行しています。

「minidump」を使用しているため、ポインタの誤用などの論理的なバグがある場合、プログラムはダンプファイルでクラッシュするため、コードのクラッシュポイントがどこにあるかを知ることができます.

ときどき (ごくまれに)、プログラムがクラッシュし、ダンプ ファイルがなくなることがあります。

どのような状況が機能しSetUnhandledExceptionFilter()ないのですか? 誰もこの問題を知っていますか?わかりません。

4

1 に答える 1

3

もちろん、見るミニダンプがないのでわかりません。SetUnhandledExceptionFilterコールバックが発生するときは、絶対最小値を実行する必要があります。プロセスは危険な状態にあります。墜落した。ロックが保持されている可能性があり、ヒープロックは特に厄介です。MiniDumpWriteDump()が成功することは期待できません。

必要なのは、名前付きイベントを待機する小さなガードプロセスです。main()関数でできるだけ早く起動し、プロセスIDを渡します。ガードプロセスは、そのイベントとプロセスハンドルの両方を待機します。例外コールバックでは、イベントを通知するだけで、すぐに長時間スリープします。これにより、ガードプロセスが起動し、MiniDumpWriteDump()に加えて、クラッシュについて通知するために必要なその他の処理が呼び出されます。そしてあなたのメインプログラムを殺します。

于 2012-05-20T10:00:16.117 に答える