Распечатать макет объекта C++ с помощью компилятора g++

Есть ли способ напечатать макет объекта C++, используя компилятор g ++ или любым другим способом. Упрощенный пример (при условии, что int занимает 4 байта)

class A{
  int a;
};

class B:public A{
  int b;
}

так что результат будет

A-
0      4
+  a   +

B-
0      4      8
+ A.a  +  b   +

Было бы полезно понять расположение объектов (в моем случае код виртуальной машины).

Заранее спасибо.

С уважением, Захир

3 ответа

Глядя на страницы руководства, -fdump-class-hierarchy может быть?

Информация, которую вы ищете, нужна отладчикам и передается им при компиляции с -g, На платформах ELF/DWARF (таких как Linux) вы можете увидеть, что там, выполнив:

g++ -g -c foo.cc
readelf -w foo.o

На других платформах objdump -g foo.o может работать.

Для ELF/DWARF pahole выглядит как хорошее место для старта.

С ++ не имеет самоанализа. Как только ваш код скомпилирован, каждая часть информации о классах теряется, за исключением того, что typeid а также std::type_info могу дать вам.

Другие вопросы по тегам