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

ремонт стиральной машины Candy remont-495.ru

Использование CrashHandler API


В динамической библиотеке BUGSLAYERUTIL.DLL мной реализован CrashHandler API, с помощью которого можно ограничить свой обработчик аварий конкретным модулем или модулями. Способ, с помощью которого это делается, состоит в том, что все исключения проходят через установленный фильтр необрабатываемых исключений. При вызове этого фильтра проверяется модуль, из которого пришло исключение. Если исключение пришло от одного из предписанных модулей, вызывается пользовательский обработчик аварий, но если оно приходит от другого модуля (не от предписанного), вызывается фильтр необрабатываемых исключений, который я заменил. Вызов замененного фильтра исключений означает, что многие модули могут использовать CrashHandler API, не мешая друг другу. Все функции CrashHandler API показаны в листинге 9-5.

Листинг 9-5. CrashHandler.СPP

/*- - - - - - - - - - - - - - - - - - - -

"Debugging Applications" (Microsoft Press)

Copyright (с) 1997-2000 John Robbing — All rights reserved.

УСЛОВНАЯ КОМПИЛЯЦИЯ:

WORK_AROUND_SRCLINE_BUG — 

Определить данный символ для работы с ошибкой SymGetLineFromAddr; после первого поиска вызывает сбой в поисках PDB-файла. Эта ошибка исправлена в DBGHELP.DLL, но есть обходной путь для пользователей, которым может потребоваться старая версия IMAGEHLP.DLL.

 - - - - - - - - - - - - - - - - - - - - - - - - -*/

#include "pch.h"

#include "BugslayerUtil.h"

#include "CrashHandler.h"

// Внутренний файл заголовков проекта

#include "Internal.h"

/*////////////////////////////////////

Определения области видимости файла

////////////////////////////////////////////////* 

Максимальный размер символов, обрабатываемых в файле 

#define MAX_SYM_SIZE 256

#define BUFF_SIZE 1024

#define SYM_BUFF_SIZE 512

/*///////////////////////////////////////////////////

Глобальные переменные области видимости файла

////////////////////////////////////////////////////*

// Фильтр необработанных исключений заказчика (обработчик аварий)




Начало  Назад  Вперед



Книжный магазин