Question Mise en page d'impression de l'objet C ++ avec le compilateur g ++


Est-il possible d'imprimer la mise en page d'un objet C ++ en utilisant le compilateur g ++ ou tout autre moyen. Un exemple simplifié (en supposant que int prenne 4 octets)

class A{
  int a;
};

class B:public A{
  int b;
}

donc la sortie serait

A-
0      4
+  a   +

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

Il serait utile de comprendre la disposition des objets (dans mon cas, le code de la machine virtuelle).

Merci d'avance.

Cordialement, Zaheer


11
2018-06-05 07:49


origine


Réponses:


En regardant les pages de manuel, -fdump-class-hierarchy peut être?


10
2018-06-05 08:07



Les informations que vous recherchez sont nécessaires aux débogueurs et sont émises pour eux lorsque vous compilez avec -g. Sur les plates-formes ELF / DWARF (telles que Linux), vous pouvez voir ce qu'il y a en exécutant:

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

Sur d'autres plateformes, objdump -g foo.o peut fonctionner.

Pour ELF / DWARF, pahole ressemble à un bon endroit pour commencer.


2
2018-06-07 03:04



C ++ n'a pas d'introspection. Une fois votre code compilé, chaque information sur les classes est perdue, sauf pour ce qui est typeid et std::type_info pouvoir te donner.


0
2018-06-05 07:59