我可以使用stdout/stderr打印输出作为字符串,用于漂亮的打印



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

我试图写一个GDB漂亮的打印脚本,利用一些命令的输出来返回一个描述值的字符串,沿着这些行:

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

不幸的是,这给了我:

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

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

从您的问题中并不完全清楚,但我假设"dump"是您程序中的方法,而不是gdb中Python对象的方法。

在这种情况下,我能想到的唯一方法是将stderr临时重定向到字符串(使用iostreams或libc等效函数),调用该函数,然后恢复stderr。最后,让gdb使用结果字符串。

这是非常迂回的。修改"dump"函数会更简单。

通常最好不要让漂亮的打印机做劣质的函数调用。首先,在某些情况下,这可能会中断或以其他方式表现奇怪(比如:"break dump"然后"bt"——可能发生了不好的事情)。此外,它还可以防止对核心文件使用漂亮打印。

最新更新