我的班级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个模块:可执行文件和两个静态库。我调试的代码位于其中一个静态库中,Impl
和Base
的定义位于第二个。
答案 0 :(得分:3)
您想要(gdb) set print object on
。
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