Я пытаюсь использовать pahole проанализировать структуру памяти программы на C ++, в которой есть несколько классов внутри пространств имен. pahole перечисляет только классы в глобальном пространстве имен. Есть ли возможность также перечислить другие классы?
MWE:
namespace ns {
class Thing {
public:
int y;
Thing(int y) : y(y) { }
};
};
class Thong {
public:
int z;
Thong(int z) : z(z) { }
};
int main(void) {
ns::Thing x(1);
Thong a(2);
return x.y + a.z;
}
g++ -ggdb3 test.cpp
pahole --version; pahole a.out
v1.10
class Thong {
public:
int z; /* 0 4 */
void Thong(class Thong *, int);/* size: 4, cachelines: 1, members: 1 */
/* last cacheline: 4 bytes */
};
Покопавшись в источнике, я узнал, что --show_private_classes
опция также печатает классы, определенные в пространствах имен.
Квалификатор пространства имен удаляется из имени класса (ns1::foo
а также ns2::foo
оба печатаются как просто foo
) но этого достаточно для моего варианта использования.
Других решений пока нет …