tools standalone script microsoft for debugger windows debugging dll windbg

windows - standalone - Depurando el temido error "La aplicación no ha podido inicializar"



windbg standalone (4)

Ocasionalmente encuentro este error al intentar ejecutar un ejecutable que he creado en Windows, pero no tengo idea de qué lo causa o cómo solucionarlo. Con el depurador de MSVC normal, solo aparece un cuadro de diálogo y sale sin posibilidad de hacer nada o mirar nada. Al menos logré capturar algo y obtener un seguimiento de la pila con el depurador de la consola de Microsoft, pero no tengo idea de qué ver desde aquí. Parece que está fallando de forma extraña dentro de ntdll.dll antes de llegar a la función principal de mi programa o ejecutar cualquiera de mis códigos.

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>

¿Alguien tiene alguna sugerencia de a dónde ir desde aquí para depurar esto?


Intente ejecutar con el walker de dependencia. http://dependencywalker.com/

Realiza análisis estáticos de dependencias, y también puede rastrear a través del inicio de una aplicación.


Por lo general, el error "La aplicación no se ha podido inicializar" está relacionado con las importaciones faltantes de dlls; combinado con el 0xC0000022 puede significar que un dll necesario para su aplicación no se puede cargar debido a un error de acceso denegado (tal vez el usuario no tiene los derechos para abrir / ejecutar ese archivo).


Si recuerdo correctamente, el código de excepción c0000022 significa Acceso denegado. Por lo general, significa que Windows bloqueó el acceso a un recurso, como un controlador de dominio o un controlador.

No ha especificado la naturaleza de su aplicación, pero es evidente desde el volcado de pila que se trata de dispositivos 3D / OpenGL. Tal vez su problema radique en un controlador o una biblioteca mal configurados. Sugiero probar en otra máquina y / o reinstalar sus controladores.


Siguiendo la respuesta de Moron, debe ejecutar Process Monitor .

Esta herramienta le dirá exactamente qué hace su proceso, y qué archivos intentó (y probablemente al menos falló) cargar, y cuáles son los errores.

Hace más que esto, y para la resolución de problemas de cualquier proceso, ahorra mucho tiempo.