有谁知道为什么在某些地方,gdb 中的 Python 代码不能正确处理异常?或者,为了澄清,异常消息可能会发送到 *gud 缓冲区以外的其他地方。gdb 没有像预期的那样将控制权返回给提示符。
(我在 Emacs (24.5.1) gud 模式下使用 GNU gdb (GDB) 7.11.50.20160212-git)
例如:
class SomeEvent():
def __init__(self, ...):
... do something ...
def __call__(self):
... do something BAD here ...
gdb.post_event(SomeEvent())
当处理“SomeEvent”时,它只会执行“__call__”直到错误的代码,返回,然后继续正常操作(如我所见)。
我在其他“回调”类型方法中注意到了这种行为,例如子类 gdb.Breakpoint 的 Stop()。