クラッシュ ダンプがWerpReportFault()
スタックにあり、期待どおりに見えません。
私の期待
WerpReportFault()
0x80000003 ブレークポイントと一緒に見た場合、 WinDbg を使用して、に渡された 2 番目の引数から取得したさまざまな例外ポインターで再ダンプできましたWerpReportFault()
。
あちらの回答でそれを推奨したので、以前はうまくいったと確信しています。この手法を提案している他のサイトもあります。たとえば、James Rossです。
私の現在の観察
私が分析しているダンプには、アクセス違反などの「通常の例外」が含まれています。
0:000> .exr -1
ExceptionAddress: 53ec8b55
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000000
Parameter[1]: 53ec8b55
Attempt to read from address 53ec8b55
しかし、彼らはまだWerpReportFault()
スタックとして持っています:
0:000> k
ChildEBP RetAddr
0018f25c 74c4171a ntdll!NtWaitForMultipleObjects+0x15
0018f2f8 75181a08 KERNELBASE!WaitForMultipleObjectsEx+0x100
0018f340 75184200 kernel32!WaitForMultipleObjectsExImplementation+0xe0
0018f35c 751a80ec kernel32!WaitForMultipleObjects+0x18
0018f3c8 751a7fab kernel32!WerpReportFaultInternal+0x186
0018f3dc 751a78a0 kernel32!WerpReportFault+0x70
0018f3ec 751a781f kernel32!BasepReportFault+0x20
0018f478 7295fa2e kernel32!UnhandledExceptionFilter+0x1af
.dump
引数 2 は、コマンドで使用するのに適した例外ポインターではないようです。
0:000> kb
ChildEBP RetAddr Args to Child
[...]
0018f3dc 751a78a0 0018f4a0 00000001 0018f478 kernel32!WerpReportFault+0x70
[...]
質問
私が抱えている問題の原因と、それを回避する方法は? !analyze -v
実際の呼び出しスタックを教えてくれるので、それが可能でなければならないことはわかっています。
Visual Basic 6 と未処理の例外フィルターが原因ですか?
0018f478 7295fa2e 00000000 72a2bd04 0018f4a8 kernel32!UnhandledExceptionFilter+0x1af
0018ff80 00440fe2 00443860 7518338a 7efde000 msvbvm60!Zombie_Release+0x10fd5
すべての手動デバッグとすべてのスクリプトが壊れておりk
、 andなどに依存しているため、私は本当に素晴らしい呼び出しスタックを持ちたいと思ってい!clrstack
ます。WerpReportFault()
彼らはスタック上で対処できません。
VB6 の依存関係から想像できるように、すべてのダンプは 32 ビットです。