我正在将开发转移到 Linux,但我找不到如何在 g++ 或 clang++ 下从 MSVC++ 获得类似于 /d1reportSingleClassLayout 的输出。如果这些编译器没有这样的功能,是否有提供类似可视化的外部工具?
stephen
问问题
905 次
3 回答
7
您需要使用调试信息(-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
以可读性差得多的形式获得相同的信息。论文https://www.kernel.org/doc/ols/2007/ols2007v2-pages-35-44.pdf与其他工具一起描述。readelf -wi myfile.o
eu-readelf -winfo myfile.o
pahole
dwarves
于 2013-04-11T16:15:53.040 回答
1
您也可以使用 Clang 前端来完成。
于 2014-03-29T16:35:29.773 回答
0
-fdump-class-hierarchy
g++支持怎么样?
于 2016-02-23T09:31:06.847 回答