我正在尝试使用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 */
};
答案 0 :(得分:0)
在源代码中探索之后,我发现--show_private_classes
选项还会打印在命名空间中定义的类。
从类名中删除了名称空间限定符(ns1::foo
,而ns2::foo
都打印为foo
),但这对我的用例来说已经足够了。