GDB Python漂亮的打印机没有缩进子结构

时间:2015-06-11 18:26:12

标签: python gdb indentation pretty-print

我已经在Python中为我的自定义类型实现了一个GDB漂亮的打印机。它会按照我的预期打印值,但当 set print pretty 生效时,它不会“正确”缩进子结构。

E.g。给定

typedef Type struct {
    int child1;
    struct {
      int grandchild1;
    } grand;
}

GDB本身,没有我漂亮的打印机,将其显示为

$4 = {
    child1 = 42,
    grand = {
        grandchild1 = 1
    }
}

然而,我的漂亮打印机显示为

$5 = {
    child1 = 42,
    grand = {
    grandchild1 = 1
}
}

忘记缩进子结构'grand'的数据。

我的漂亮打印机基本上是这样做的:

def __init__(self, val):
    self.val = val

def to_string(self):
    return None

def children(self):
    for field in self.val.type.fields():
       yeild field.name, str(self.val[field.name])

如下所述:Make debugging easier with custom pretty-printers

这有什么区别?

1 个答案:

答案 0 :(得分:0)

根据你所说的,这听起来像一个普通的老虫。不过,一个完整的复制器会很好。