【发布时间】:2021-07-09 01:11:33
【问题描述】:
我有一个具有std::unordered_set<SomeClass*> 类型成员的类。 gdb 为标准库中的类型提供了漂亮的打印机,包括std::unordered_set。打印包含 7 个元素的集合会返回类似
$50 = std::unordered_set with 7 elements = {
[0] = 0x7fffffffb750,
[1] = 0x7fffffffb330,
[2] = 0x7fffffffaf10,
[3] = 0x7fffffffaaf0,
[4] = 0x7fffffffa6d0,
[5] = 0x7fffffffa2b0,
[6] = 0x7fffffffc490
}
我需要在 gdb python 的 API 中自己重新实现这个漂亮的打印机,这样在迭代时我可以从 SomeClass 返回“名称”字段的值,而不是原始指针。但是,我似乎找不到正确的方法来迭代 unordered_set 的存储桶并检索存储桶中的各个节点。在this link 中,有一个旧版本的实现给了我一些提示,但我无法正确理解。
【问题讨论】:
-
你试过为
SomeClass*创建一个漂亮的打印机吗? -
我有
SomeClass的漂亮打印机,但是虽然你可以为类型创建漂亮的打印机,但我不确定你是否可以为指针注册一个。我记得我过去曾尝试过此操作,但无法使其正常工作。如果有人这样做,我会再次尝试这种方法。 -
我以前也成功过。
标签: gdb pretty-print