gpt4 book ai didi

debugging - 从堆栈上有 WerReportFault() 的小型转储中获取信息

转载 作者:行者123 更新时间:2023-12-05 05:22:20 27 4
gpt4 key购买 nike

我的堆栈中有 WerpReportFault() 的故障转储,它们看起来确实不像我期望的那样。

我的期望

如果看到 WerpReportFault() 以及 0x80000003 断点,我就能够使用 WinDbg 重新转储不同的异常指针,取自传递给 WerpReportFault()< 的第二个参数

我非常确定它以前有效,因为我什至在 my answer over there 中推荐过它.还有其他网站建议使用这种技术,例如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

参数 2 似乎不是用于 .dump 命令的良好异常指针。

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!clrstack 以及类似的东西。他们无法处理堆栈上的 WerpReportFault()

所有转储都是 32 位的,正如您可以从 VB6 依赖项中想象的那样。

最佳答案

这样的问题是上下文错误导致的。它似乎被设置为正常的上下文记录。要将其设置为异常上下文,请使用 .ecxr。要切换回正常上下文(您所看到的),请使用 .cxr

关于debugging - 从堆栈上有 WerReportFault() 的小型转储中获取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40666745/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com