【发布时间】:2014-08-27 23:20:33
【问题描述】:
我正在努力学习 WinDbg。在简单的程序中,我无限等待Critical Section。我的程序挂起,我使用任务管理器得到程序的转储。
现在,每当我使用 kc 或 k 命令获取堆栈跟踪时,它都会给我以下堆栈跟踪。
wow64cpu!CpupSyscallStub
wow64cpu!Thunk0ArgReloadState
wow64!RunCpuSimulation
wow64!Wow64LdrpInitialize
ntdll!LdrpInitializeProcess
ntdll!_LdrpInitialize
ntdll!LdrInitializeThunk
现在,为什么它不显示我的实际代码的堆栈跟踪。我如何理解我的程序究竟挂在哪里?
【问题讨论】:
-
也许你正在转储错误的线程堆栈?你试过
~*k吗? -
使用 ProcessExplorer 捕获 dmp 并在 Windbg 中运行 !analyze -v -hang
-
如果您使用 64 位版本的任务管理器生成转储,您将获得 32 位模拟器 (wow64*) 的转储。使用 32 位版本的任务管理器生成 32 位进程的故障转储。
-
@joshpoley ProcessExplorer 生成具有正确位数的转储,因此您无需关心这一点。
-
@magicandre1981 可以使用 -hang。谢谢。
标签: windows debugging windbg dump freeze