Linux 相当于 MSVC++ 的选项 /d1reportSingleClassLayout?
What is the Linux equivalent to MSVC++'s option /d1reportSingleClassLayout?
我正在将开发转移到Linux,但我找不到如何在g++或clang++下从msvc++获得类似/d1reportSingleClassLayout的输出。如果这些编译器没有这样的功能,是否有一个外部工具提供类似的可视化?
您需要编译带有调试信息的文件(-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.o
或eu-readelf -winfo myfile.o
中获得同样的信息,但可读性要差得多。论文https://www.kernel.org/doc/ols/2007/ols2007v2-pages-35-44.pdf描述了pahole
和其他dwarves
工具。
您也可以使用Clang前端。
g++支持的-fdump-class-hierarchy
怎么样?
- 是否有任何g++选项转储类布局和变量?
相关文章:
- 没有找到相关文章