- Win32API質問箱 Build118
290 :デフォルトの名無しさん[sage]:2014/09/09(火) 22:55:50.01 ID:s44xo5mT - すんません、ずっと前にWindwosイベントログやら不正落ちに付いて聞いたものなんですが、
Windowsイベントログにある「障害アドレス」と、SetUnhandledExceptionFilter を使って得られる EXCEPTION_POINTERS *e の e->ExceptionRecord->ExceptionAddress のアドレスが激しく違うんですけど、 それぞれどういうアドレスなんです? テスト用に仕込んだ不正落ちコードは変更せずに、 ・SetUnhandledExceptionFilter を使わずに普通に不正落ちさせたとき(エラーを捕まえちゃうとイベントログに残らないから) と、 ・SetUnhandledExceptionFilter でエラー捕まえてExceptionAddressの値を見たとき のアドレスが違いすぎるんです。SetUnhandledExceptionFilterの呼び出し有無とか、それによって呼び出されるコールバック関数の有無があるから多少アドレスが違うのはわかるんだけど... イベントログに残っている「障害アドレス」は、手元にある map ファイルをもとにして例外発生箇所が容易に分かったけど、 ExceptionAddress の値はベースアドレス 0x400000 に対して一桁二桁大きい値なんでmapに対応関数が載ってないんですよね。どちらの方法でも同じアドレスが取得で生きると思ってたから、意外でした。
|
|