我正在使用 pdb 模块来调试程序。我想了解如何退出 pdb 并允许程序继续完成。该程序在计算上运行起来很昂贵,所以我不想在没有脚本尝试完成的情况下退出。continue
似乎不起作用。如何退出 pdb 并继续我的程序?
6 回答
continue
应该“继续执行,只在遇到断点时停止”,所以你在某处设置了断点。要删除断点(如果您手动插入它):
(Pdb) break
Num Type Disp Enb Where
1 breakpoint keep yes at /path/to/test.py:5
(Pdb) clear 1
Deleted breakpoint 1
(Pdb) continue
或者,如果你正在使用pdb.set_trace()
,你可以试试这个(尽管如果你以更花哨的方式使用 pdb ,这可能会破坏事情......)
(Pdb) pdb.set_trace = lambda: None # This replaces the set_trace() function!
(Pdb) continue
# No more breaks!
一个简单的Ctrl-D将打破 pdb。如果您想继续而不是中断,只需按c而不是整个continue
命令
@voithos的答案set_trace
是正确的,所以在您使用. 是的,pdb.set_trace = lambda: None
黑客可以正常工作,但如果您设置了其他断点并希望稍后重新启用它,则不会。对我来说,这表明不幸pdb
的是缺少一堆功能(甚至是显示列表等基本功能),这是另一种情况。
好消息是,这pdb++
是一个很好的替代品pdb
,它解决的问题之一就是禁用set_trace
. 所以你可以简单地做:
pip install pdbpp
然后在(Pdb++)
提示符下键入:
pdb.disable()
如果您想稍后重新启用,不出所料,这很有效:
pdb.enable()
简单的!除此之外,您还将获得许多其他有用的好东西。
找到不安装任何东西退出 pdb 的新方法: - 当程序开始运行时,按 ctrl+c,然后将窗口切换到另一个(任何窗口),然后运行 pdb 的原始 shell 应该显示如下内容:(pdb) ..... - 切换回 pdb,然后按 Enter,现在一切就绪,pdb 命令 shell 再次出现
禁用断点。从 pdb 中,只需键入 disable N,其中 N 是您卡住的断点编号。如果您不知道麻烦断点的编号,请输入 tbreak。这将在“Num”列下按编号列出您的断点,并在标题为“Enb”的列下显示(是)或否(否)它们是启用还是禁用。
一旦你解除了麻烦的断点,运行命令 continue(或缩写 c)应该会完成你的程序。