Почему ntdll.dll сбой моего исполняемого файла на С++?

У меня возникли проблемы с тем, чтобы получить исполняемый файл Visual С++, приложение вылетает, вот что я видел в средстве просмотра событий.

Faulting application name: submit.exe, version: 0.0.0.0, time stamp: 0x50a3cce7
Faulting module name: ntdll.dll, version: 6.1.7601.17514, time stamp: 0x4ce7ba58
Exception code: 0xc0000374
Fault offset: 0x000ce653
Faulting process id: 0x8fc
Faulting application start time: 0x01cdc2a3da4f2997
Faulting application path: c:\submit.exe
Faulting module path: C:\Windows\SysWOW64\ntdll.dll
Report Id: 1813823a-2e97-11e2-8675-000c29229191

Исполняемый файл, скомпилированный в старых версиях Visual Studio, работает, но я получаю сообщение об ошибке с исполняемым файлом, скомпилированным с более новыми VS, такими как 2008 или 2010. пожалуйста, совет

Ответ 1

Устранение этой проблемы может быть реальной проблемой... особенно если вы не знакомы с базой кода.

Рассмотрите возможность использования Application Verifier в сочетании с отладчиком Visual Studio.

  • Запустите Visual Studio и скомпилируйте приложение
  • Запустите утилиту Verifier приложения.
  • File = > Add Application
  • Выберите соответствующий Tests (например, кучи, исключения,...)
  • Для запуска приложения используйте Visual Studio Debug.

Когда что-то происходит плохо... ваш отладчик остановится. Это должно дать вам довольно хорошее представление об источнике проблемы.

Кроме того, это может помочь загрузить недостающие символы перед началом теста. В Visual Studio 2012 вы можете это сделать: Debug = > Options and Settings = > Debugging = > Symbols = > Load all symbols.

Удачи!

ЛИТЕРАТУРЫ

ОБНОВЛЕНИЕ: июль 2015

Когда вы закончите, обязательно отключите проверки AppVerfier, которые вы включили... иначе вы можете столкнуться с неожиданными побочными эффектами через 6 месяцев после того, как забыли о AppVerifier.