Вы можете использовать ptype
.
Предположим, я добавляю в ваш пример следующие строки:
A alpha;
B beta;
Теперь в gdb я могу попросить описание типа класса (илиэкземпляр одного):
(gdb) ptype alpha
type = class A {
public:
virtual void foo();
}
(gdb) ptype A
type = class A {
public:
virtual void foo();
}
(gdb) ptype beta
type = class B : public A {
public:
virtual void foo();
}
(gdb) ptype B
type = class B : public A {
public:
virtual void foo();
}
Если я попробую сделать это с указателем, я получу объявленный тип:
(gdb) ptype b
type = class A {
public:
virtual void foo();
} *
Если я хочу настоящий тип, я должен установитьпеременная `print object ':
(gdb) set print object on
(gdb) ptype b
type = /* real type = B * */
class A {
public:
virtual void foo();
} *
, а затем снова вызвать ptype
, чтобы увидеть, что имеет B
(я не знаю, как это сделать за один шаг).