2010-02-25 1 views

ответ

1

Нет, вызов отладчика создается в коде, который запускает стек из исключения, поэтому стек еще не распался. Это справедливо как для синхронного (C++), так и для async (OS) исключения.

См. Fig. 13 в знаменитой статье MSJ A Crash Course on the Depths of Win32™ Structured Exception Handling.

Необработанный фильтр исключений вызывается после того, как первый проход списка фильтров исключений, если фильтр не принят, который готов обработать исключение. Этот первый проход проходит до разматывания, которое происходит на втором проходе. Если вы ворвались в отладчик, когда вам предоставили шанс, вы найдете свое место исключения down вашего стека, и это имеет смысл: это не принесло бы никакого значения для отладки уже раскрученного стека, вы бы понятия не имели что пошло не так.

+0

Я имел в виду http://www.boost.org/community/error_handling.html и «Примечание для разработчиков Windows» в разделе «Что о ошибках программиста»? раздел... – 2010-03-02 07:03:00

0

Это зависит от stack unwind semantics Выбирается при компиляции приложения Компилятору может быть поручено поймать или не поймать исключения SEH для вашего кода. Код запуска всегда улавливает C++ & Исключения SEH и если какое-либо исключение поймано, оно завершает приложение.