代码之家  ›  专栏  ›  技术社区  ›  kennytm

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

  •  13
  • kennytm  · 技术社区  · 15 年前

    里面有旗子吗 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 不起作用。它只打印成员函数。)

    (假设我不知道课程 A D 或者有太多的课程,我不想自己列出。)

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

    2 回复  |  直到 15 年前
        1
  •  6
  •   Kornel Kisielewicz    15 年前

    为正确的工作使用正确的工具。G++不是一个层次结构查看工具。

    您总是可以使用外部工具,例如 doxygen ,可以倾倒 graphviz 图表。

    对于电力解决方案 gcc-xml ,可以将整个程序转储到一个XML文件中,您可以随意解析该文件。

        2
  •  2
  •   jfawcett    15 年前

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