我在 C++ 中有一个类似这样的结构:
struct HeapBlock {
char* data;
}
struct DataBlock {
int size;
HeapBlock hb;
}
这些是框架的一部分,还有其他几个成员、助手等,但这些是重要的部分。我想在 Python GDB 漂亮打印机中显示这个,如下所示:
NAME TYPE VALUE
DataBlock: DataBlock "Size 2000 @ 0x445343"
|--->size int 2000
|--->data HeapBlock {...}
|--->[0] char 0x34
|--->[1] char 0x45
....
<more values>
到目前为止,我未能让 HeapBlock 显示为一个单独的孩子。我已经成功地滥用了一个迭代器来产生:
NAME TYPE VALUE
DataBlock: DataBlock
|--->size int 2000
|--->[0] char 0x34
|--->[1] char 0x45
....
<more values>
这是通过从's方法db["size"]
返回的迭代器返回第一个结果,然后从下一个结果返回来完成的。DataBlockPrinter
children()
db["hb"]["data"]
size
我也尝试为 使用单独的打印机HeapBlocks
,但问题是 aHeapBlock
不知道它有多大:它存储在父级 ( DataBlock
) 中,因此HeapBlock
打印机也不知道何时停止迭代。
当它作为这里的一部分打印时,是否可以将size
字段发送到漂亮的打印机?HeapBlock
DataBlock