Delphi相談室その5
■ このスレッドは過去ログ倉庫に格納されています
0157無責任だが
NGNG1)実際の例外は systemユニットの procedure _RaiseExcept; が本体で
構造化例外APIのRaiseExceptionが呼ばれる
2)構造化例外は全てデバッカで一度捕捉されてしまう
デバッガオプションで EAbort等については無視
3)try は以下の5行のアセンブラ出力に変換される(思ったより例外のコストは低い)
xor eax,eax
push ebp
push exceptのアドレス
push dword ptr fs:[eax]
mov fs:[eax],esp
4) exceptのアドレスには
system._HandleOnException;
がある。
だから、やろうと思えば、system.RaiseExcept で
グローバル変数、デバックマスクフラグを用意し
そのフラグ値によってAPIの構造化例外の代わりに自前で例外を処理する
( ebpとfs:[0] を戻してアドレスにジャンプする)
ようにすれば、デバック中に場所によってマスクするような事が可能かも
■ このスレッドは過去ログ倉庫に格納されています