我正在将开发转移到Linux但我无法找到如何在g ++或clang ++下从MSVC ++获得类似于/ d1reportSingleClassLayout的输出。如果这些编译器没有这样的功能,是否有提供类似可视化的外部工具?
答案 0 :(得分:7)
您需要使用调试信息(-g
选项)编译该文件,然后使用pahole
显示结构布局。 pahole
包裹通常提供dwarves
$ 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 */
};
; source; on GitHub}。
-C
pahole
选项允许您选择要检查的类/结构。
如果您无权访问readelf -wi myfile.o
,则可以从eu-readelf -winfo myfile.o
或pahole
获取相同信息,而这种信息的可读性较差。论文in Ubuntu与其他dwarves
工具一起描述了{{1}}。
答案 1 :(得分:1)
答案 2 :(得分:0)
g ++支持-fdump-class-hierarchy
怎么样?