Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 915
Eadilu Avatar asked Nov 10 '22 00:11

Eadilu


1 Answers

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.

like image 80
ecatmur Avatar answered Nov 14 '22 22:11

ecatmur