Отладка приложений

         

Эта глава посвящена обработчикам программных



Эта глава посвящена обработчикам программных аварий, которые разделяются на обработчики исключений и фильтры необработанных исключений. Оба типа аварийных обработчиков позволяют получать большое количество информации об авариях приложения. Фильтры необработанных исключений работают как с Visual C++, так и с Visual Basic, а обработка исключений — только с Visual C++.
Иногда путают C++- и SEH-исключения. Первые обеспечены спецификациями языка C++, тогда как SEH-исключения — операционной системой. Эти два вида обработки исключений совершенно различны. К счастью, можно комбинировать C++- и SHE-исключения с помощью функции _set_se_translator исполнительной библиотеки C++. Необходимо убедиться, что вы понимаете различия между асинхронной и синхронной обработкой исключений в C++. Проще всего сформулировать эти различия примерно так: "Асинхронность имеет место тогда, когда все функции программы отслеживают время жизни объектов, а синхронность — когда только некоторые функции отслеживают это время".
Важную роль в организации работы аварийных обработчиков играет функция SetunhandiedExceptionFiiter, которая позволяет установить окончательный SEH-фильтр исключений. Окончательный фильтр исключений позволяет получать управление непосредственно перед тем, как будет раскрыто диалоговое окно Application Error, чтобы можно было записать в него всю информацию о причинах аварии. Представленный в конце раздела код (CrashHandler) позволит облегчить установку фильтров необработанных исключений и выполнит всю достаточно трудную работу по трансляции аварийной информации таким образом, чтобы вы могли сконцентрироваться на ее отображении и на особенно ответственных участках своего приложения.

Содержание раздела