Доступ к информации о программе, которую gdb видит в C++

Мне записали программу в C++, на Linux, скомпилированном с-g.

Когда я выполняю его под gdb, я могу

1) set breakpoints
2) at those breakpoints, print out variables
3) see the stackframe
4) given a variable that's a structure, print out parts of the structure (i.e. how ddd displays information).

Теперь, учитывая, что моя программа компилируется с "-g" - там так или иначе, что я могу получить доступ к этому питанию в рамках своей программы самой?

Т.е., учитывая, что моя программа компилируется с "-g", есть ли некоторые

std::vector<string> getStackFrame();

функция я могу звонить для получения текущего стекового фрейма в текущей точке выполнения?

Данный подсказка к объекту и это - тип... может я делать

станд.:: вектор getClassMember (class_name);

?

Я понимаю, что ответ по умолчанию "нет, C++ не поддерживает тот уровень самоанализа" - однако, вспоминает, что я нахожусь на Linux, моя программа компилируется с "-g", и gdb может сделать это, таким образом, ясно информация там. Вопрос: есть ли некоторый API для доступа к нему?

Править: PS Naysers, я хотел бы видеть основания для закрытия этого вопроса.

6
задан anon 19 March 2010 в 07:44
поделиться

2 ответа

Формат отладки называется dwarf. Это должно дать вам подсказку, где искать дальше.

Библиотека для чтения ELF файла DWARF отладочная информация

3
ответ дан 17 December 2019 в 04:45
поделиться

Я помню, как использовал libbfd для получения имен функций из объектных файлов. Это библиотека для чтения форматов объектов, возможно, вы также можете читать другую отладочную информацию с ее помощью. (Я не знаю, если честно)

http://www.skyfree.org/linux/references/bfd.pdf

2
ответ дан 17 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: