Class mgr backtrace::BtWalk

Материал из ISPWiki
Перейти к: навигация, поиск

Получение backtrace

Класс mgr_backtrace::BtWalk

Класс для трасcировки стека

#include <mgrbacktrace.h> 

Описание:

class mgr_backtrace::BtWalk

Warning: Класс, для хранения своих данных, использует std::shared_ptr. Таким образом копирование объекта не приведет к созданию нового экземпляра класса.

Открытые члены (кратко)

BtWalk () throw ()

Конструктор производит трассировку программы начиная от места создания экземпляра класса

Навигация по трассировке

void First () throw ()

переход к первой функции


bool Next () throw ()

переход к следующей функции

Получение информации

string FuncName () const throw ()

имя функции


string ModuleName () const throw ()

имя файла и строка где находится функция


void * FuncAddr () const throw ()

адрес возврата функции


long long Offset () const throw ()

текущее смещение внутри функции


string AsString () const throw ()

Текстовое представление трассировки текущей функции.

Конструкторы

BtWalk () throw ()

Конструктор производит трассировку программы начиная от места создания экземпляра класса

Warning: Максимальная глубина трассировки определена константой MAX_BACKTRACE_DEPTH
' Трассировка стека выполнения программы происходит в момент создания экземпляра класса, однако получения дополнительной информации, такой как имена функций, имена модулей и т.д., происходит в момент её непосредственного истребования (читай обращения к функциям FuncName, ModuleName и т.д.). Таким образом достигается определенная эффективность в случае если необходимо получить информацию только о части трассировки стека.

Методы

void First () throw ()

переход к первой функции

bool Next () throw ()

переход к следующей функции

Returned: true в случае успеха, false в случае ошибки или достижения конца трассировки

string FuncName () const throw ()

имя функции

string ModuleName () const throw ()

имя файла и строка где находится функция

void * FuncAddr () const throw ()

адрес возврата функции

long long Offset () const throw ()

текущее смещение внутри функции

string AsString () const throw ()

Данная функция/метод является inline функцией

Текстовое представление трассировки текущей функции.

Формат вывода аналогичен вызову функции printf со следующими параметрами:

printf("%s (%s + 0x%llx) [%p]", FuncName(), ModuleName(), Offset(), FuncAddr());  

Returned: Строка в вышеуказанном формате