起動時に DLL をロードする MFC SDI アプリケーションがあります。ソースコードを表示してDLLを使用することしかできませんが、変更して再コンパイルすることはできません。
現在の状況では、DLL がエラーに遭遇するたびに、以下のように exit() が呼び出されます。
bool Func()
{
// .. do something here
if (error) { exit(999); }
}
私の MFC アプリケーションでは、すべての例外を処理するように SetUnhandledExceptionFilter を設定し、デバッグ用に MiniDump も作成しました。
したがって、問題は、DLL がエラーに遭遇するたびに、ステータス コード 999 で exit() を呼び出すだけであり、私の ExceptionFilter はそれをキャッチしないため、PostMortem デバッグ用の MiniDump が作成されないことです。
1. グローバル例外ハンドラーがこれをキャッチする他の方法はありますか
?
2. exit() 関数をオーバーライドして、呼び出されたときに「throw("エラー発生!")」を呼び出し、グローバル例外ハンドラーがそれをキャッチできるようにすることはできますか?
3. MFC アプリケーションで atexit() を使用してみました。これにより、DLL が exit() を呼び出すたびにエラーをスローする別の関数を登録します。しかし、これもうまく機能していないようです。
私が本当にやりたかったことは、DLL でエラーが発生するたびに、MiniDump を生成して PostMortem デバッグを実行できるようにすることです。この状況でうまくいく可能性のあるものは他にありますか?
ありがとう。