【问题标题】:How to Find Crash in Windbg Log?如何在 Windbg 日志中查找崩溃?
【发布时间】:2015-11-26 05:46:14
【问题描述】:

这是我在 Windbg 显示的日志中发现的崩溃。但无法从中得到任何东西。请帮忙。

00000000`0008ae08 00000000`76eb219e wow64cpu!CpupSyscallStub+0x2
00000000`0008ae10 00000000`76e7219a wow64cpu!Thunk0ArgReloadState+0x5
00000000`0008aec0 00000000`76e79b14 wow64!RunCpuSimulation+0xa
00000000`0008af10 00000000`76ed840f wow64!Wow64KiUserCallbackDispatcher+0x244
00000000`0008b270 00007ff9`ac2c3044 wow64win!whcbfnINOUTSTYLECHANGE+0xbf
00000000`0008bc50 00000000`76ee9a7a ntdll!KiUserCallbackDispatcherContinue
00000000`0008bcd8 00000000`76ed7a74 wow64win!NtUserSetWindowLongPtr+0xa
00000000`0008bce0 00000000`76e6a44b wow64win!whNtUserSetWindowLong+0x44
00000000`0008bd10 00000000`76eb1dc5 wow64!Wow64SystemServiceEx+0xfb
00000000`0008c5c0 00000000`76e7219a wow64cpu!ServiceNoTurbo+0xb
00000000`0008c670 00000000`76e79b14 wow64!RunCpuSimulation+0xa
00000000`0008c6c0 00000000`76ed880e wow64!Wow64KiUserCallbackDispatcher+0x244
00000000`0008ca20 00007ff9`ac2c3044 wow64win!whcbfnINOUTNCCALCSIZE+0x14e
00000000`0008d470 00000000`76eb2352 ntdll!KiUserCallbackDispatcherContinue
00000000`0008d558 00000000`76eb2318 wow64cpu!CpupSyscallStub+0x2
00000000`0008d560 00000000`76e7219a wow64cpu!Thunk0Arg+0x5
00000000`0008d610 00000000`76e79b14 wow64!RunCpuSimulation+0xa
00000000`0008d660 00000000`76ed5c0a wow64!Wow64KiUserCallbackDispatcher+0x244
00000000`0008d9c0 00007ff9`ac2c3044 wow64win!whcbfnDWORD+0x21a
00000000`0008e3c0 00000000`76ee5a3a ntdll!KiUserCallbackDispatcherContinue
00000000`0008e448 00000000`76ed6df2 wow64win!NtUserMessageCall+0xa
00000000`0008e450 00000000`76ed6b64 wow64win!whNT32NtUserMessageCallCB+0x32
00000000`0008e4a0 00000000`76e6a44b wow64win!whNtUserMessageCall+0xc4
00000000`0008e560 00000000`76eb1dc5 wow64!Wow64SystemServiceEx+0xfb
00000000`0008ee10 00000000`76e7219a wow64cpu!ServiceNoTurbo+0xb
00000000`0008eec0 00000000`76e720d2 wow64!RunCpuSimulation+0xa
00000000`0008ef10 00007ff9`ac2f3a15 wow64!Wow64LdrpInitialize+0x172
00000000`0008f450 00007ff9`ac2d2f1e ntdll!LdrpInitializeProcess+0x1591
00000000`0008f770 00007ff9`ac248ece ntdll!_LdrpInitialize+0x89ffe
00000000`0008f7e0 00000000`00000000 ntdll!LdrInitializeThunk+0xe

【问题讨论】:

  • 切换到 32 位进程转储的 32 位视图会有所帮助; !wow64exts.sw
  • 显示与上述相同的信息。尝试使用 32 位windbg
  • 帮助我确定崩溃发生的原因和位置
  • 您使用 64 位任务管理器捕获了 32 位进程的转储:stackoverflow.com/a/31890003/1466046 使用 32 位任务管理器或 ProcessExplorer
  • 好的,但你是如何将其识别为 32 位进程的?

标签: windows windbg


【解决方案1】:

正如其他人所提到的,您有一个 32 位进程的 64 位转储。我们可以看到这一点,因为您的摘录显示了 64 位地址,并且堆栈中有 wow64 模块。

通常您应该尝试获取dump of the correct bitness。链接的 SO 答案列出了几个选项来获得一个。

在 x86 版本的 WinDbg 中打开转储文件没有帮助。即使是 x86 版本也可以分析 64 位转储:

!sw 命令(使用.load wow64exts 加载)或.effmach x86 命令可以将调试器切换到x86 模式。注意命令提示符的变化:

要显示调用堆栈,您现在需要wow64exts 扩展。还要确保设置了符号:

.load wow64exts
.symfix
.reload

请注意,每个线程有一个调用堆栈,因此请确保获得正确的堆栈:

~#s
k

如果发生崩溃,请查看异常:

.exr -1

【讨论】:

  • 如果我观察到应用程序冻结没有崩溃,除了异常关键字,哪些关键字可以帮助我识别问题。
猜你喜欢
  • 2014-11-25
  • 2014-08-15
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
相关资源
最近更新 更多