例外をうまく処理するプロセスがあります。次のように呼び出します。
_set_se_translator(exception_trans_func);
SetUnhandledExceptionFilter(UnhandledExceptionFilterHandler);
_set_purecall_handler(purecallHandler);
set_terminate(terminateHandler);
set_unexpected(unexpectedHandler);
_set_invalid_parameter_handler(InvalidParameterHandler);
atexit(exitHandler); //ignored during an expected exit
_onexit(onexitHandler); //ignored during an expected exit
例外が発生するたびに、ハンドラーの 1 つが呼び出され、クラッシュ ダンプが作成されます。人生は素晴らしい。
1 つの顧客サイトを除きます。プロセスをシャットダウンすると、何らかの理由でこれらの呼び出しを経由しない例外が発生し、次のエラーが発生します。
「0x101ba9df」の命令が「0x00000004」のメモリを参照していました。メモリを「読み取る」ことができませんでした。[OK] をクリックして終了します....」
x000000004 のメモリ参照は、おそらく null ポインターのようです。そして、そのアドレスを見ると、グローバル STL オブジェクトのデストラクタのように見えます (おそらく、グローバルがクリーンアップされる CRT の initterm 呼び出しで)。
現在、診断ダンプとコール スタックを取得できず、何が起こっているのかを正確に確認できないため、ちょっと立ち往生しています。そう....
例外が上記のハンドラーを介してルーティングされず、代わりにユーザーに表示されるのはなぜですか?
そのダイアログを非表示にする方法はありますか (その時点で害はありません)。
根本的なエラーを追跡する方法はありますか?
アイデアをありがとう。