Приложение крашется под отладчиком - Microsoft C++ Exception (ext.code e06d7363)!
Хочу обратиться за помощью к реверсерам и дизассемблерщикам. При исследовании программ меня очень сильно донимает одна проблема: часто, при запуске исследуемой программы под отладчиком, выскакивает следующее исключение:
После нажатия на ОК, обычно выбрасывает либо в ntdll.dll, либо в KernelBase.dll:
Когда я продолжаю выполнение (F9) и нажимаю Yes (pass to app), то возможны три сценария развития событий:
- программа продолжает работу, как ни в чём не бывало;
- данное исключение выбрасывается снова, и снова, и снова, и... (после Detach from process крашется);
- сразу крашется - процесс завершается с ошибкой.
Разумеется, если приложение запускается не под отладкой, то оно работает без всяких ошибок.
Я заметил, что подобные исключения чаще всего происходят тогда, когда в приложении вызывается форма открытия или сохранения файла. Всё, что нашёл по данной ошибке, так это описание:
The Windows 10 error ‘EXTERNAL EXCEPTION E06D7363’ occurs when a program tries to copy or move a locked file. It may be locked by Windows, your antivirus software or malware scanner, the error isn’t picky.
Из этого я могу предположить, что когда программа, работающая под отладчиком, пытается обратиться к системе для доступа к файлам и папкам, чтобы открыть или сохранить свой проект, система блокирует доступ и выбрасывает данное исключение.
Собственно, мой вопрос очевиден: как решить данную проблему? Как сделать так, чтобы программы можно было нормально запускать под отладчиком без всяких подобных экзепшнов?
Техническая информация: OS Windows 10, дизассемблер IDA PRO 7.0, выбранный отладчик Local Windows Debugger.
Ответы (1 шт):
На случай, если кто-то будет ещё искать (как я сам только что делал...) ответ на этот вопрос... Да, решение может не сработать, но стоит попробовать в окне Exception Handing не просто нажать Yes (Pass to App), а предварительно зайти в пункт Change Exception Definition. По умолчанию там будет стоять следующая настройка:
Для таких исключений я её меняю на вариант:
Аналогичные действия можно провести из меню Debugger > Debugger options... > Edit exceptions. Там приведён список всех обрабатываемых исключений, конкретно это:
После этого сообщения об исключениях если и есть, то они успешно улетают в лог, не прерывая работу отладчика. Не встречал ситуации, где это бы не помогло, но может как раз тут - не тот случай.





