有没有一种方法可以使用g++编译器或其他方式打印出C ++对象的布局。以下是一个简化的示例(假设int占用4个字节)
class A{
int a;
};
class B:public A{
int b;
}
那么输出的结果将会是什么?
A-
0 4
+ a +
B-
0 4 8
+ A.a + b +
了解对象的布局(在我的情况下是虚拟机代码)将会很有用。
提前感谢。
敬礼, Zaheer
有没有一种方法可以使用g++编译器或其他方式打印出C ++对象的布局。以下是一个简化的示例(假设int占用4个字节)
class A{
int a;
};
class B:public A{
int b;
}
那么输出的结果将会是什么?
A-
0 4
+ a +
B-
0 4 8
+ A.a + b +
了解对象的布局(在我的情况下是虚拟机代码)将会很有用。
提前感谢。
敬礼, Zaheer
查看手册,也许可以使用 -fdump-class-hierarchy
选项?
需要注意的是,从GCC 8开始,-fdump-class-hierarchy
选项已被替换为-fdump-lang-class
。
-g
编译时会为它们发出。在 ELF/DWARF 平台(例如 Linux)上,您可以通过执行以下命令来查看其中的内容:g++ -g -c foo.cc
readelf -w foo.o
objdump -g foo.o
可能有效。C++没有内省功能。一旦您的代码被编译,有关类的每个信息都会丢失,除了typeid
和std::type_info
可以提供的信息。