Is there any way to dump the class layout of a g++

2019-03-31 05:05发布

When compiling with g++, -fdump-class-hierarchy exports the program's vtables in a (more or less) human-readable format. However, the resulting file only contains information about the vtable but not about the class layout itself. I'd like to get a comprehensive list of the layout of all my program's classes.

clang offers the -cc1 -fdump-record-layouts arguments to achieve this. The MS compiler can be called using -d1reportAllClassLayout. Is there any g++ switch that does this?

1条回答
趁早两清
2楼-- · 2019-03-31 05:32

If the program is compiled with debugging information, you can use pahole to dump the struct and vtable layouts from the debugging information:

g++ -ggdb3 -c program.cpp
pahole program.o

Note that g++ will only generate debugging information for structs that are actually used within the program, so you may have to add some dummy functions to create or otherwise use objects of your struct types.

查看更多
登录 后发表回答