Мне записали программу в 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, я хотел бы видеть основания для закрытия этого вопроса.
Формат отладки называется dwarf. Это должно дать вам подсказку, где искать дальше.
Я помню, как использовал libbfd для получения имен функций из объектных файлов. Это библиотека для чтения форматов объектов, возможно, вы также можете читать другую отладочную информацию с ее помощью. (Я не знаю, если честно)