c++ - 有什么方法可以转储 g++ 编译程序的类布局

标签 c++ variables gcc g++ vtable

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

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

最佳答案

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

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

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

关于c++ - 有什么方法可以转储 g++ 编译程序的类布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26468315/

相关文章:

c++ - 在哪里可以找到 libboost_random?

c++ - 有哪些不同的初始化方式

javascript - HTML5 - 启动共享相同变量的游戏对象

c - GCC过度优化?自纪元开始以来的不同秒数取决于我在哪里编译

c - 操作在宏中可能未定义

c++ - XIMEA:openCV 2.4.9 无法找到 Ximea 相机,尽管它可以与其他程序一起正常工作

c++ - 在 C++ 中过度杀伤 "crosses initialization of variable"错误?

c++ - 选择排序以找到未排序数组中的最大数字

java - 如何在线程运行时修改变量

c++ - 如何设置 code::blocks 以在目标链接器选项之前链接项目链接器选项?