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


Таблицы символов, символьные машины и проход стека - часть 7


#define _SYMBOLENGINE_H

// Можно включить либо IMAGEHLP.DLL, либо DBGHELP.DLL.

# include "imagehlp.h"

#include <tchar.h>

// Включайте эти директивы в случае, если пользователь забывает

// про компоновку соответствующих библиотек

#pragma comment (lib, "dbghelp. lib")

#pragma comment (lib, "version, lib")

// Грандиозная идея создания классов-оболочек на структурах, которые

// имеют размерные поля, пришла от коллеги-журналиста из MSJ Поля

// (Paul DiLascia). Спасибо, Поль!;

// Я не включаю в класс константу IMAGEHLP_SYMBOL, потому что это

// структура переменного размера.

// Класс-оболочка IMAGEHLP_MODULE

struct CImageHlp_Module : public IMAGEHLP_MODULE

{

CImageHlp_Module ()

{

memset ( this, NULL, sizeof ( IMAGEHLP_MODULE));

SizeOfStruct = sizeof ( IMAGEHLP_MODULE); 

}

};

// Класс-оболочка IMAGEHLP_LINE 

struct CImageHlp_Line : public IMAGEHLP_LINE 

{

CImageHlp_Line () 

{

memset ( this, NULL, sizeof ( IMAGEHLP_LINE)); 

SizeOfStruct = sizeof ( IMAGEHLP_LINE); 

}

};

// Класс символьной машины class CSymbolEngine

{

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

Public-конструктор и деструктор 

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

public :

// Чтобы использовать этот класс, вызовите метод Symlnitialize для

// инициализации символьной машины и затем применяйте другие методы

// вместо соответствующих функций из DBGHELP.DLL

CSymbolEngine ( void)

{

}

virtual -CSymbolEngine ( void)

{

}

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

Вспомогательные информационные public-функции

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

public :

// Возвращает версию используемого файла DBGHELP.DLL.

// Чтобы преобразовать возвращаемые значения в читаемый формат,

// применяется функция:

// wsprintf ( szVer ,

// _Т ( "%d.%02d.%d.%d"),

// HIWORD ( dwMS)

// LOWORD ( dwMS)

// HIWORD ( dwLS)

// LOWORD ( dwLS) );




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



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