Централизованная обработка исключений
Категория реферата: Рефераты по информатике, программированию
Теги реферата: семейные реферат, ответы по тетради
Добавил(а) на сайт: Berkov.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11
Приведенные в примере реализации функций HookUpUnhandledFilter и myUnhandledExceptionFilter являются сильно упрощенными и, конечно, неприменимы в реальной жизни. Мало того, попытка их применения может привести к печальным последствиям. Однако они достаточны для иллюстрации механизма подмены вызова системных функций. В реальности же необходимо дизассемблировать код функции UnhandledExceptionFilter, запоминать его и затем использовать при возврате управления. Но это в значительной мере усложнило бы код и могло скрыть основной его смысл, поэтому я решил оставить эту реализацию для демонстрации самого факта возможности подобных действий.
Сбор и сохранение информации о состоянии процесса
Как было упомянуто выше, функция UnhandledExceptionFilter принимает один аргумент, являющийся указателем на _EXCEPTION_POINTERS. В этой структуре сохранена информация о состоянии приложения после возникновения исключения, состояние регистров, информация об исключении. Но этого может быть мало для восстановления реальной картины произошедшего. Поэтому в своем обработчике я попытаюсь собрать ту информацию, которая поможет понять причину сбоя. Объем этой информации может зависеть от типа приложения и нельзя привести весь список необходимых параметров, способных помочь при анализе причины падения приложения. Программист должен сам решить, какой объем и тип информации ему требуется. Здесь я хочу лишь сказать, что информации, которую собирает о приложении библиотека dbghelp.dll, поставляемая с Windows, достаточно для большинства приложений. dbghelp.dll сохраняет следующее:
- информация о потоках;
- информация о загруженных модулях;
- информация об исключении;
- информация о системе;
- информация о памяти.
После сбора информации ее можно сохранить в файле на диске для последующего анализа и разбора.
Заключение
Операционная система Windows предоставляет каждому разработчику уникальную возможность обрабатывать исключения, возникающие в его программах, с помощью механизма Структурированной Обработки Исключений (SEH). Но приложения не полностью используют возможности, предоставляемые этим системным сервисом, и оставляют часть ошибок необработанными. В статье я привел пример того, как получить управление в случае фатальной ошибки приложения, и дал приложению получить управление вместо того, чтобы быть просто выгруженным. Этот метод может дать приложению последний шанс:
сохранить данные;
собрать информацию о состоянии на момент ошибки;
хотя бы извиниться....
Скачали данный реферат: Хлопонин, Яшнов, Кандаков, Marianna, Калошин, Kazarinov, Кобонов.
Последние просмотренные рефераты на тему: культурология, база рефератов, егэ ответы, курсовая работа на тему право.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11