我尝试运行我在
Windows上构建的可执行文件时偶尔会遇到此错误,但我不知道是什么导致它或如何修复它.使用普通的MSVC调试器,它只会弹出一个对话框并退出,没有机会做任何事情或查看任何内容.我已经设法至少捕获一些东西,并使用Microsoft控制台调试器获得堆栈跟踪,但我不知道从这里看什么.在获得我的程序的主要功能或运行我的任何代码之前,它似乎在ntdll.dll中奇怪地失败了.
C:\> cdb bugrepro Microsoft (R) Windows Debugger Version 6.11.0001.404 X86 Copyright (c) Microsoft Corporation. All rights reserved. CommandLine: bugrepro.exe Symbol search path is: C:\SYMBOLS Executable search path is: ModLoad: 00400000 00447000 bugrepro.exe ModLoad: 7c900000 7c9af000 ntdll.dll ModLoad: 7c800000 7c8f6000 C:\WINDOWS\system32\kernel32.dll ModLoad: 10000000 1002a000 glut32.dll ModLoad: 5ed00000 5edcc000 C:\WINDOWS\system32\OPENGL32.dll ModLoad: 77c10000 77c68000 C:\WINDOWS\system32\msvcrt.dll ModLoad: 77dd0000 77e6b000 C:\WINDOWS\system32\ADVAPI32.dll ModLoad: 77e70000 77f02000 C:\WINDOWS\system32\RPCRT4.dll ModLoad: 77fe0000 77ff1000 C:\WINDOWS\system32\Secur32.dll ModLoad: 77f10000 77f59000 C:\WINDOWS\system32\GDI32.dll ModLoad: 7e410000 7e4a1000 C:\WINDOWS\system32\USER32.dll ModLoad: 68b20000 68b40000 C:\WINDOWS\system32\GLU32.dll ModLoad: 73760000 737ab000 C:\WINDOWS\system32\DDRAW.dll ModLoad: 73bc0000 73bc6000 C:\WINDOWS\system32\DCIMAN32.dll ModLoad: 76b40000 76b6d000 C:\WINDOWS\system32\WINMM.dll (64c.7b4): Unknown exception - code c0000022 (first chance) (64c.7b4): Unknown exception - code c0000022 (!!! second chance !!!) eax=0012fc54 ebx=00000000 ecx=0012fc80 edx=7c90e4f4 esi=7ffd8000 edi=c0000022 eip=7c96478e esp=0012fc54 ebp=0012fca4 iopl=0 nv up ei pl zr na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246 ntdll!RtlRaiseStatus+0x26: 7c96478e c9 leave 0:000> ~k ChildEBP RetAddr 0012fca4 7c93f14e ntdll!RtlRaiseStatus+0x26 0012fd1c 7c90e437 ntdll!_LdrpInitialize+0x241 00000000 00000000 ntdll!KiUserApcDispatcher+0x7 0:000>
任何人都有任何建议,从这里调试这里去哪里?
跟进Moron的回答,你应该运行
Process Monitor.
此工具将准确地告诉您您的流程执行的操作,以及它尝试的文件(可能至少有一个文件失败)以及错误是什么.
它不仅仅是这个,而且对于任何流程故障排除,它都是一个惊人的节省时间.