我正在将开发转移到 Linux,但我找不到如何在 g++ 或 clang++ 下从 MSVC++ 获得类似于 /d1reportSingleClassLayout 的输出。如果这些编译器没有这样的功能,是否有外部工具提供类似的可视化功能?
您需要编译带有调试信息的文件(-g
选项)然后使用pahole
显示结构布局。pahole
通常可以从dwarves
包裹 (source http://git.kernel.org/cgit/devel/pahole/pahole.git/; 在 GitHub 上 https://github.com/acmel/dwarves; 在Ubuntu中 https://launchpad.net/ubuntu/precise/+package/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 */
};
The -C
选项允许您选择要检查的类/结构。
如果您无权访问pahole
您可以从可读性极差的形式获得相同的信息readelf -wi myfile.o
or eu-readelf -winfo myfile.o
。论文https://www.kernel.org/doc/ols/2007/ols2007v2-pages-35-44.pdf https://www.kernel.org/doc/ols/2007/ols2007v2-pages-35-44.pdf描述pahole
和其他人一起dwarves
tools.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)