struct HeapBlock {
char* data;
}
struct DataBlock {
int size;
HeapBlock hb;
}
这些是框架的一部分,还有其他几个成员、助手等等,但这些都是重要的部分。我想在Python GDB漂亮的打印机中显示如下:
^{pr2}$到目前为止,我未能将HeapBlock显示为单独的孩子。我成功地滥用迭代器生成:
NAME TYPE VALUE
DataBlock: DataBlock
|--->size int 2000
|--->[0] char 0x34
|--->[1] char 0x45
....
<more values>
这是通过在第一个结果中返回DataBlockPrinter
的children()
方法返回的第一个结果中的db["size"]
,然后从{
我也尝试为HeapBlocks
使用单独的打印机,但问题是HeapBlock
不知道它有多大:它存储在父文件(DataBlock
)中,因此HeapBlock
打印机也不知道何时停止迭代。在
是否可以将size
字段作为DataBlock
的一部分打印到HeapBlock
漂亮的打印机上?在
我找到了另一条路
不幸的是,没有内置的方法来做到这一点。我相信在gdbugzilla中有一个漏洞。在
这可能需要一个黑客:在
DataBlock
打印机中,在哈希表中记录HeapBlock
的地址和大小。那么HeapBlock
打印机可以查找到这个。当然,问题就变成了决定如何使缓存失效的问题。我一时想不出一个好办法:-(但也许可以简单地不使其无效。当DataBlock
打印机被破坏时,您可以尝试使其失效;gdb不保证这能正常工作,但在实践中可能是可以的。在相关问题 更多 >
编程相关推荐