Членские переменные класса/структуры дампа в 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 не работает. Это только печатает функции членства.)

(Предположите, что я не знаю классы A кому: D, или существует столько классов, что я не хочу перечислять их сам.)

(А именно, я хочу вывести членские переменные http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/iokit/IOKit/IOUserClient.h).

13
задан kennytm 24 January 2010 в 05:39
поделиться

2 ответа

Используйте правильный инструмент для правильной работы. G ++ не большая часть инструмента просмотра иерархии.

Вы всегда можете использовать внешний инструмент, такой как Doxygen , который может сбросить диаграммы .

Для решений питания есть GCC-XML , который может выбросить всю вашу программу в файл XML, который вы сможете проанализировать на воле.

6
ответ дан 2 December 2019 в 01:41
поделиться

Я бы использовал DDD, затем отображать структуры на панели данных. Вы можете расширить индивидуальную структуру, указывающую на другую структуру, и пользовательский интерфейс будет следовать от одного на другой. Очень мощный инструмент отладки.

2
ответ дан 2 December 2019 в 01:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: