Расположение печати объекта C++ с g ++ компилятор

Есть ли способ распечатать расположение объекта 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

11
задан Matteo Italia 5 June 2010 в 11:05
поделиться

3 ответа

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

10
ответ дан 3 December 2019 в 08:54
поделиться

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

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

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

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

3
ответ дан 3 December 2019 в 08:54
поделиться

В C++ нет интроспекции. После компиляции кода любая информация о классах теряется, кроме той, что могут дать typeid и std::type_info.

0
ответ дан 3 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: