トップページ > プログラム > 2014年09月09日 > s44xo5mT

書き込み順位&時間帯一覧

73 位/203 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000000101



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Win32API質問箱 Build118

書き込みレス一覧

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に対応関数が載ってないんですよね。どちらの方法でも同じアドレスが取得で生きると思ってたから、意外でした。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。