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


Использование CrashHandler API - часть 2


 static PFNCHFILTFN g_pfnCallBack = NULL;

 // Оригинальный фильтр необработанных исключений

 static LPTOP_LEVEL_EXCEPTION_FILTER g_pfnOrigFilt = NULL;

 // Массив модулей для ограниченного обработчика аварий 

static HMODULE * g_ahMod = NULL; 

// Размер массива g_ahMod (число элементов)

 static UINT g_uiModCount = 0;

// Статический буфер, возвращаемый различными функциями. Этот буфер 

// позволяет передавать данные без использования стека, 

static TCHAR g_szBuff [ BUFF_SIZE ]; 

// Буфер поиска статических символов

 static BYTE g_stSymbol [ SYM_BUFF_SIZE ];

// Структура статического исходного файла и номера строки

static IMAGEHLP_LINE g_stLine;

// Кадр стека, используемый для его проходов

static STACKFRAME g_stFrame;

// Флажки, указывающие, что символьная машина была инициализирована

static BOOL g_bSymEngInit = FALSE;

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

Объявление функций области видимости файла

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

// Обработчик исключений

LONG _stdcall CrashHandlerExceptionFilter ( EXCEPTION_POINTERS *

pExPtrs );

// Конвертирует простое исключение в строчное значение 

LPCTSTR ConvertSimpleException ( DWORD dwExcept);

 // Внутренняя функция, которая выполняет все проходы по стеку

 LPCTSTR _stdcall

InternalGetStackTraceString ( DWORD dwOpts ,

EXCEPTION_POINTERS * pExPtrs); 

// Внутренняя функция SymGetLineFromAddr

BOOL InternalSymGetLineFromAddr ( IN HANDLE hProcess ,

IN DWORD dwAddr , 

OUT PDWORD pdwDisplacement, 

OUT PIMAGEHLP_LINE Line , );

// Инициализирует символьную машину, если это необходимо void InitSymEng ( void);

// Очищает символьную машину, если это необходимо

 void CleanupSymEng ( void); 

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

Класс деструктора

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

// См. Примечание в MEMDUMPVALIDATOR.CPP об автоматических классах. 




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



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