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

What is the Linux equivalent to MSVC++'s option /d1reportSingleClassLayout?

本文关键字:d1reportSingleClassLayout 选项 相当于 MSVC++ Linux      更新时间:2023-10-16

我正在将开发转移到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.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++选项转储类布局和变量?
相关文章:
  • 没有找到相关文章