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

2019-08-21 22:12发布

我移动开发Linux,但我找不到我怎么能下得克+ +或++铿锵类似于/ d1reportSingleClassLayout从MSVC ++的输出。 如果这些编译器不具有这样的功能,有没有提供类似的可视化的外部工具?

Answer 1:

您需要编译调试信息(文件-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工具。



Answer 2:

你也可以做到与锵前端 。



Answer 3:

如何-fdump-class-hierarchy用g ++支持?

  • 是否有任何的g ++选项转储类布局和虚函数表?


文章来源: What is the Linux equivalent to MSVC++'s option /d1reportSingleClassLayout?
标签: linux c++