有没有办法转储g ++编译程序的类布局

时间:2014-10-20 14:39:29

标签: c++ variables gcc g++ vtable

使用g ++进行编译时,-fdump-class-hierarchy以(或多或少)人类可读的格式导出程序的vtable。但是,生成的文件仅包含有关vtable的信息,但有关类布局本身的信息。我想得到一份关于我所有课程的布局的综合列表。

clang提供-cc1 -fdump-record-layouts参数来实现此目的。可以使用-d1reportAllClassLayout调用MS编译器。是否有任何g ++开关可以做到这一点?

1 个答案:

答案 0 :(得分:1)

如果使用调试信息编译程序,可以使用pahole从调试信息中转储struct和vtable布局:

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

请注意,g ++只会为程序中实际使用的结构生成调试信息,因此您可能需要添加一些虚函数来创建或使用结构类型的对象。