GDB不显示对象的成员

时间:2017-02-06 20:20:50

标签: c++ gcc gdb static-libraries

我的班级Impl继承自Base

我正在尝试调试的简单代码段:

{
    Base* base = getObject();     // getObject() returns instance of Impl
    base->something();
}

当我想检查base时,我得到:

p base
$1 = (Base *) 0x7fffc408edf0

p *base
$2 = {_vptr.Base = 0x7ffff74be100 <vtable for Impl+16>}

我正在使用gcc编译我的程序,并使用-O0 -g。我也尝试过-ggdb3代替-g而没有用。

这里可能很重要:我的项目分为3个模块:可执行文件和两个静态库。我调试的代码位于其中一个静态库中,ImplBase的定义位于第二个。

2 个答案:

答案 0 :(得分:3)

您想要(gdb) set print object on

Documentation

set print object on
  When displaying a pointer to an object, identify the actual (derived) type
  of the object rather than the declared type, using the virtual function table.

答案 1 :(得分:1)

gdb不知道您的*base指向Impl,所以你必须告诉它:

p (Impl)*base