Приложение крашется под отладчиком - Microsoft C++ Exception (ext.code e06d7363)!

Хочу обратиться за помощью к реверсерам и дизассемблерщикам. При исследовании программ меня очень сильно донимает одна проблема: часто, при запуске исследуемой программы под отладчиком, выскакивает следующее исключение:

введите сюда описание изображения

После нажатия на ОК, обычно выбрасывает либо в ntdll.dll, либо в KernelBase.dll:

введите сюда описание изображения

Когда я продолжаю выполнение (F9) и нажимаю Yes (pass to app), то возможны три сценария развития событий:

  1. программа продолжает работу, как ни в чём не бывало;
  2. данное исключение выбрасывается снова, и снова, и снова, и... (после Detach from process крашется);
  3. сразу крашется - процесс завершается с ошибкой.

введите сюда описание изображения

Разумеется, если приложение запускается не под отладкой, то оно работает без всяких ошибок.

Я заметил, что подобные исключения чаще всего происходят тогда, когда в приложении вызывается форма открытия или сохранения файла. Всё, что нашёл по данной ошибке, так это описание:

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 шт):

Автор решения: Tousaka Jun

На случай, если кто-то будет ещё искать (как я сам только что делал...) ответ на этот вопрос... Да, решение может не сработать, но стоит попробовать в окне Exception Handing не просто нажать Yes (Pass to App), а предварительно зайти в пункт Change Exception Definition. По умолчанию там будет стоять следующая настройка:

Настройки для исключений по умолчанию

Для таких исключений я её меняю на вариант:

Вариант пропуска исключения

Аналогичные действия можно провести из меню Debugger > Debugger options... > Edit exceptions. Там приведён список всех обрабатываемых исключений, конкретно это:

Изменение обработки исключений через меню

После этого сообщения об исключениях если и есть, то они успешно улетают в лог, не прерывая работу отладчика. Не встречал ситуации, где это бы не помогло, но может как раз тут - не тот случай.

→ Ссылка