以g ++转储类/结构成员变量

时间:2010-01-23 16:33:33

标签: c++ gcc g++

g++中是否有标记或工具来转储结构/类的成员变量?为了说明,请考虑像这样的源代码

struct A { virtual void m() {}; };
struct B : public A { int b; virtual void n() = 0; };
struct C : public B { int c1, c2; void o(); };
struct D : public C { virtual void n() {}; A d; };

我希望得到与

相似的东西
A:   0 = (vptr)

B:   0 = (vptr)
     4 = b

C:   0 = (vptr)
     4 = b
     8 = c1
    12 = c2

D:   0 = (vptr)
     4 = b
     8 = c1
    12 = c2
    16 = d

-fdump-class-hierarchy不起作用。它只打印成员函数。)

(假设我不知道AD的类,或者有很多类我不想自己列出它们。)

(具体来说,我想转储http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/iokit/IOKit/IOUserClient.h)的成员变量。

2 个答案:

答案 0 :(得分:6)

使用正确的工具来完成正确的工作。 g ++不是层次结构查看工具。

您始终可以使用doxygen之类的外部工具来转储graphviz图表。

对于电源解决方案,有gcc-xml,可以将整个程序转储到可以随意解析的xml文件中。

答案 1 :(得分:2)

我会使用ddd,然后在数据窗格中显示结构。您可以展开指向另一个结构的单个结构,UI将从一个结构到另一个结构。一个非常强大的调试工具。