我试图从我的VB.NET代码调试故障转储,应该运行24-7的Win7机器没有调试器。所有模块上的目标是32位,所以我不知道它为什么会尝试64位的东西。当32bit目标被选择时,Crashdump会显示64bit。为什么?
看来它试图附加到调试器并失败,因此它会中止。 我登录到机器,发现它再次崩溃,所以我做它停在下面的跟踪一个crashdump.DMP文件:
wow64.dll!Wow64NotifyDebugger() + 0x1d bytes
wow64.dll!HandleRaiseException() + 0xee bytes
wow64.dll!Wow64NtRaiseException() + 0x88 bytes
wow64.dll!whNtRaiseException() + 0x15 bytes
wow64.dll!Wow64SystemServiceEx() + 0xd7 bytes
wow64cpu.dll!TurboDispatchJumpAddressEnd() + 0x2d bytes
wow64.dll!RunCpuSimulation() + 0xa bytes
wow64.dll!Wow64LdrpInitialize() + 0x429 bytes
ntdll.dll!LdrpInitializeProcess() + 0x1936 bytes
ntdll.dll!string "Enabling heap debug options\n"() - 0x45fe9 bytes
ntdll.dll!LdrInitializeThunk() + 0xe bytes
当一个调试器远程连接的相同的代码根本不会崩溃或本地。
谁能告诉我该找什么?我将可执行文件编译为Debug x86版本,以便我可以随意附加调试器并查看Debug.Writeline()调用输出。
如果该机器没有调试器,您将如何创建故障转储?并且需要发生的事情是:callstack包含'ntdll.dll!string'启用堆调试选项\ n“()'?我从来没有见过,但也许有一些Gflags选项启用此过程。 –