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

孤街浪徒 提交于 2019-12-05 02:04:16

问题


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:


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.



来源:https://stackoverflow.com/questions/26468315/is-there-any-way-to-dump-the-class-layout-of-a-g-compiled-program

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!