我試圖從我的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選項啓用此過程。 –