1

ジャスト イン タイム デバッグと同様に、VS 2003 でコンパイルされたアプリは、キャッチ (...) で Win32 (または非同期) 例外をキャッチし、スタックをアンワインドしますか? ダンプファイルが書き込まれる前に...

4

2 に答える 2

1

いいえ、デバッガーの呼び出しは例外からスタックを実行するコードで作成されるため、スタックはまだ巻き戻されていません。これは、同期 (C++) 例外と非同期 (OS) 例外の両方に当てはまります。

有名な MSJ の記事A Crash Course on the Depths of Win32™ Structured Exception Handlingの図 13を参照してください。

未処理の例外フィルターは、例外を処理するフィルターが許可されていない場合、例外フィルター リストの最初のパスの後に呼び出されます。この最初のパスは、2 番目のパスで発生する巻き戻しの前です。チャンスが与えられたときにデバッガーに侵入した場合、例外がスタックに配置されていることがわかります。これは完全に理にかなっています。すでに巻き戻されたスタックをデバッグしても、ほとんどまたはまったく価値がありません。何が起こったのかわかりません。違う。

于 2010-02-25T06:42:48.513 に答える
0

これは、アプリケーションのコンパイル時に選択されたスタック アンワインド セマンティクスに依存します。コンパイラは、コードの SEH 例外をキャッチするかどうかを指示できます。起動コードは常に C++ および SEH 例外をキャッチし、例外がキャッチされるとアプリケーションを終了します。

于 2010-02-25T06:44:16.090 に答える