【发布时间】:2023-03-21 12:58:01
【问题描述】:
我有一个在 Linux 上用 C++ 编写的程序,使用 -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();
我可以调用函数来获取当前执行点的当前堆栈帧吗?
给定一个指向对象的指针和它的类型...我能做吗
std::vector getClassMember(class_name);
?
我意识到默认答案是“不,C++ 不支持那种级别的内省”——但是,回想一下我在 linux 上,我的程序是用“-g”编译的,而 gdb 可以做到,所以显然信息在那里。问题是:是否有一些 API 可以访问它?
编辑:PS Naysers,我很想知道结束这个问题的原因。
【问题讨论】:
-
为什么有人要关闭一个完全有效的问题?