【发布时间】:2012-12-31 06:23:36
【问题描述】:
看起来 ProcDump 转储了错误线程的事后转储。使 ProcDump 成为 JIT 调试器:
C:\>procdump -ma -i c:\mydumps
制作了一个测试程序C++ MFC:
int* ptr = 0;
switch(message) {
...
case IDM_CRASH:
*ptr = 23;
break;
...
从(ProcDumpTest.exe 程序的)菜单中选择 Crash 项,应用程序崩溃并进行转储。然而,转储显示 (windbg) 一个堆栈和一个意外线程的指令指针 (eip = 7c90e514)。如何获取发生错误的线程的堆栈跟踪?
00400000 - 004a0000 ProdDumpTest.exe
07c90000 - 07c9b000 ntdll.dll
在更严重的情况下遇到了同样的问题。谢谢你的帮助! G更多
【问题讨论】:
-
首先检查 Windbg !analyze 命令告诉你什么。如果它可以看到异常,它将选择崩溃的线程。
-
~ 命令列出一个线程(错误的线程)。 .ecxr 命令报告 Minidump... 没有异常上下文 (HRESULT 0x80004002)。我认为 procdump -ma 选项会创建一个完整的转储。似乎我在某个地方错过了重点。
标签: windows debugging windbg procdump