开发者

Print layout of C++ object with g++ compiler

开发者 https://www.devze.com 2023-01-02 21:57 出处:网络
Is there a way to print the layout of a C++ object using the g++ compiler or any other means. A simplified example (assuming int takes 4 bytes)

Is there a way to print the layout of a C++ object using the g++ compiler or any other means. A simplified example (assuming int takes 4 bytes)

class A{
  int a;
};

class B:public A{
  int b;
}

so the output would be

A-
0      4
+  a   +

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

It would be useful to understand the layout of objects (in my case virtu开发者_StackOverflowal machine code).

Thanks in advance.

Regards, Zaheer


Looking at the man pages, -fdump-class-hierarchy maybe?

Note that since GCC 8, the -fdump-class-hierarchy option has been replaced with -fdump-lang-class.


The information you seek is needed by debuggers and is emitted for them when you compile with -g. On ELF/DWARF platforms (such as Linux), you can see what's there by executing:

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

On other platforms, objdump -g foo.o may work.

For ELF/DWARF, pahole looks like a good place to start.


C++ doesn't have introspection. Once your code is compiled, every piece of information about classes is lost except for what typeid and std::type_info can give you.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号