Ответ 1
Посмотрите на страницы руководства, -fdump-class-hierarchy
может быть?
Есть ли способ распечатать макет объекта С++ с помощью компилятора g++ или любых других средств. Упрощенный пример (предполагая, что int занимает 4 байта)
class A{
int a;
};
class B:public A{
int b;
}
поэтому выход будет
A-
0 4
+ a +
B-
0 4 8
+ A.a + b +
Было бы полезно понять компоновку объектов (в моем случае код виртуальной машины).
Спасибо заранее.
С уважением, Захир
Посмотрите на страницы руководства, -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
.