什么是Linux相当于MSVC ++的选项/ d1reportSingleClassLayout?

我正在把开发转移到Linux上,但是我找不到如何从g ++或者clang ++的MSVC ++中得到类似于/ d1reportSingleClassLayout的输出。 如果这些编译器没有这样的function,是否有一个提供类似可视化的外部工具?

您需要使用调试信息( -g选项)编译文件,然后使用pahole来显示结构布局。 pahole通常来自dwarves软件包( 来源 ; 在GitHub ; Ubuntu )。

 $ g++ -ggdb -c -o myfile.o myfile.cpp $ pahole -C MyClass myfile.o class MyClass { public: int ()(void) * * _vptr.MyClass; /* 0 4 */ int i; /* 4 4 */ const char * c; /* 8 4 */ void MyClass(class MyClass *, const class MyClass &); void MyClass(class MyClass *); virtual void ~MyClass(class MyClass *, int); /* size: 12, cachelines: 1, members: 3 */ /* last cacheline: 12 bytes */ }; 

-C选项让你选择要检查的类/结构。

如果您无法访问pahole ,则可以通过readelf -wi myfile.oeu-readelf -winfo myfile.o获取相同的信息。 https://www.kernel.org/doc/ols/2007/ols2007v2-pages-35-44.pdf pahole论文描述了其他dwarves工具的旁边。

你也可以用Clang前端来做。

g ++支持-fdump-class-hierarchy

  • 有没有任何g ++选项转储类布局和vtable?