Отладке страшного 'Приложения не удалось инициализировать' ошибку

Я иногда сталкиваюсь с этой ошибкой, когда попытка выполняет исполняемый файл, я основывался на окнах, но я понятия не имею, что вызывает его или как зафиксировать его. С нормальным отладчиком 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>

У кого-либо есть какие-либо предложения того, куда пойти отсюда в отладке этого?

7
задан Thomas Weller 20 October 2016 в 17:34
поделиться

4 ответа

Следуя ответу Морона, Вам следует запустить Process Monitor .

Этот инструмент сообщит вам, что именно делает ваш процесс и какие файлы он пытался (и, вероятно, по крайней мере один из них не удался) загрузить, и каковы ошибки.

Он делает больше, и для любого устранения неполадок процесса это потрясающая экономия времени.

10
ответ дан 6 December 2019 в 10:50
поделиться

Обычно ошибка "Приложению не удалось инициализировать" связана с пропущенными импортами из dll; в сочетании с 0xC0000022 это может означать, что dll, необходимая вашему приложению, не может быть загружена из-за ошибки запрета доступа (возможно, у пользователя нет прав открывать/исполнять этот файл).

4
ответ дан 6 December 2019 в 10:50
поделиться

Попробуй бежать с иждивенцем Уолкером. http://dependencywalker.com/

Он делает статический анализ зависимостей, а также может прослеживать их через запуск приложения.

3
ответ дан 6 December 2019 в 10:50
поделиться

Если я правильно помню, код исключения c0000022 означает «Доступ запрещен». Обычно это означает, что Windows заблокировала доступ к ресурсу, например контроллеру домена или драйверу.

Вы не указали природу вашего приложения, но из дампа стека видно, что оно имеет дело с устройствами 3D / OpenGL. Возможно, ваша проблема связана с неправильно настроенным драйвером или библиотекой. Я предлагаю протестировать на другой машине и / или переустановить драйверы.

1
ответ дан 6 December 2019 в 10:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: