我可以使用stdout / stderr printout作为字符串,进行漂亮打印吗?

时间:2013-05-29 13:52:44

标签: gdb gdb-python

我有一个函数dump(),当在X类型的对象上调用时,会打印出对stderr有用的东西。

我正在尝试编写一个GDB漂亮打印脚本,该脚本利用某些命令的输出来返回描述值的字符串,具体如下:

return gdb.execute(str(self.val) + '.dump()', False, True)

不幸的是,这给了我:

  

警告:当前输出协议不支持重定向

我该如何解决这个问题?这是获得stderr输出的正确方法吗?

1 个答案:

答案 0 :(得分:2)

你的问题并不完全清楚,但我认为“dump”是你程序中的一个方法,而不是gdb中Python对象的方法。

在这种情况下,我能想到实现你想要的唯一方法是暂时将stderr重定向到一个字符串(使用iostreams或libc等价物),调用该函数,然后恢复stderr。最后,让gdb使用生成的字符串。

这是非常迂回的。更改“转储”功能会更简单。

通常最好不要让漂亮的打印机做低级函数调用。首先,在某些情况下(例如:“break dump”然后“bt” - 可能会发生一些不好的事情),这可能会破坏或以其他方式表现得很奇怪。此外,它会阻止您对核心文件使用漂亮打印。