C++ 转储g+中的类/结构成员变量+;
在C++ 转储g+中的类/结构成员变量+;,c++,gcc,g++,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 = (v
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类层次结构
不起作用。它只打印成员函数。)
(假设我不知道A
到D
的类,或者有太多的类,我不想自己列出。)
(特别是,我想转储的成员变量)。我将使用ddd,然后在数据窗格中显示结构。您可以展开指向另一个结构的单个结构,UI将从一个结构扩展到另一个结构。非常强大的调试工具。为正确的工作使用正确的工具。g++不是一个很好的层次结构查看工具 您可以始终使用外部工具,例如,转储图表
对于power解决方案,它可以将整个程序转储到xml文件中,您可以随意解析该文件。谢谢。但这需要我列出所有的结构。此外,不幸的是,有些结构是抽象的,所以我不能
new
1。有时代码过于复杂/模糊,无法理解,但调试器仍有望工作。我更幸运的是,我能用电脑访问复杂的结构。也是一个有趣的选择,但是UI需要一些时间来适应。谢谢gccxml
对我来说很有用,尽管我仍然需要编写一个不太小的脚本来将其转换回我需要的格式。(以防有人感兴趣。)