getting subclass type from base class pointer
Paul Marquess
Paul.Marquess@owmobility.com
Thu Oct 29 23:38:00 GMT 2015
> From: gdb-owner@sourceware.org [mailto:gdb-owner@sourceware.org] On Behalf Of Paul Marquess
>
> I must be missing something obvious, so apologies upfront.
>
> Consider this simple snippet of C++
>
>
> class SuperClass
> {
> };
>
> class SubClass : public SuperClass
> {
> };
>
> int main()
> {
> SuperClass* pTest = new SubClass;
>
> delete pTest; // << Break here in GDB }
>
> Using the python API I'm trying to determine the type of object that pTest points to.
>
>
> gdb) python x = gdb.parse_and_eval("pTest")
> (gdb) python print x.type
> SuperClass *
> (gdb) python print x.dereference().type
> SuperClass
>
> How do I get at the SubClass object using the Python API?
Quick follow-up to my own post, the actual code I'm working with is more like shown below, so I there should be a vtable in play.
Same question - how get at the SubClass object if I have a pointer to a SuperClass object using the Python API?
class SuperClass
{
public:
virtual int fred() { return 1; }
SuperClass() {}
virtual ~SuperClass() {}
};
class SubClass : public SuperClass
{
public:
virtual int fred() { return 2 ;}
SubClass() {}
virtual ~SubClass() {}
};
int main()
{
SuperClass* pTest = new SubClass;
delete pTest;
}
More information about the Gdb
mailing list