-1

私はいくつかの事後分析デバッガーを実装しようとしています。これは、プログラムによって処理されない例外のみをキャッチすることを意味するため、未処理の例外フィルターを設定しています (そして、誰も私の後に設定しないようにします)。 mshtml.dll) で、アクセス違反は発生するが未処理の例外フィルター呼び出しは発生せず、ポスト モーテム デバッガー (windbg など) がポップアップします。ポスト モーテム デバッガーはどのようにそれをキャッチしますか?

AddVectoredExceptionHandler は良い考えではありません。なぜなら、seh がそれを処理して続行したとしても呼び出されるからです。

4

2 に答える 2

0

最も小さい単純な事後分析デバッガーは、AeDebug キーを使用して、OS によって提供される pid とイベントを出力するだけです。

int main(int argc, char* argv[])
{
    printf("%s\n", GetCommandLineA());
    printf("%d\n", getchar());
    return 0;
}

ここに画像の説明を入力

Windbgがfastfailをキャッチしたかどうかはわかりませんでしたが、テストしたところ、windbgと上記のコードの両方がfastfailをキャッチし、スクリーンショット2と3に示すように2つのイベントをキャッチしました

C:\>cdb -c "uf accvio!main;q" accvio.exe | tail

0:000> cdb: Reading initial command 'uf accvio!main;q'

accvio!main:
01361000 33c9            xor     ecx,ecx
01361002 cd29            int     29h  <<<<<< __fastfail(0 @ecx)
01361004 33c0            xor     eax,eax
01361006 c3              ret
quit:

C:\>

イベント 168 イベント 204

于 2018-03-15T12:06:27.080 に答える