Есть ли способ распечатать расположение объекта C++ с помощью g ++ компилятор или любые другие средства. Упрощенный пример (принимающий интервал берет 4 байта),
class A{
int a;
};
class B:public A{
int b;
}
таким образом, вывод был бы
A-
0 4
+ a +
B-
0 4 8
+ A.a + b +
Было бы полезно понять расположение объектов (в моем коде виртуальной машины случая).
Заранее спасибо.
С уважением, Zaheer
Глядя на страницы руководства, -fdump-class -ierarchy
может быть?
Информация, которую вы ищете, нужна отладчикам и выдается для них при компиляции с -g
. На платформах ELF/DWARF (таких как Linux) вы можете посмотреть, что там находится, выполнив:
g++ -g -c foo.cc
readelf -w foo.o
На других платформах может сработать objdump -g foo.o
.
Для ELF/DWARF, pahole выглядит хорошим местом для начала.
В C++ нет интроспекции. После компиляции кода любая информация о классах теряется, кроме той, что могут дать typeid
и std::type_info
.