为什么在 cmd.Cmd 子类函数中退出 ipdb 会退出函数?

Why does quitting ipdb while inside a cmd.Cmd subclass function exit the function?

我有一个小的 cmd 子类:

class Foo(cmd.Cmd):
    def do_ipdb(self, *a, **kw):
        import ipdb; ipdb.set_trace()
        pass

Foo().cmdloop()

这可以让我进入 ipdb,但是当使用 'q' 或 CTRL-D 退出时,cmdloop 也会中断(这是不希望的)

我尝试用 try / except 包装 ipdb,但我没有到达 except 部分。退出 ipdb 后如何维护 cmdloop?

顺便说一句,我看到 cmd2 已经做了我想做的事情(使用它的默认 python 选项),但我仍然想知道旧的 cmd

根据 ipdb documentation,ipdb 暴露

same interface as the pdb module

pdb docs for q(uit) 状态:

Quit from the debugger. The program being executed is aborted.

因此,当您按下 'q' 时,调试器 运行 程序都会退出。

您可能想要使用不同的 pdb 命令,例如 c(ontinue):

Continue execution, only stop when a breakpoint is encountered.