【发布时间】:2012-01-21 16:10:01
【问题描述】:
我正在用 GDB 调试一个 C++ 程序。
我有一个指向某个类的对象的指针。指针被声明为由几个子类扩展的某个超类。
对象中没有字段来指定该对象的精确类类型,但定义了一些虚函数(例如 bool is_xxx())在运行时告诉类类型。
有没有办法在不调用这些虚函数的情况下告诉 GDB 中对象的精确类类型。当程序是多线程时,在 GDB 中调用此类函数可能会产生令人困惑的结果。
【问题讨论】:
-
我不是 gdb 专家,但您可能能够遍历 v-table 指针(这是您的基类指针字面上指向的内容)并解析函数的名称。跨度>
-
@selbie 咨询 v-table 正是 ptype 在 {set print object on} 处于活动状态时所做的事情,正如 Beta 在他/她的回答中指出的那样
标签: c++ types gdb superclass instanceof