问题:如何退出pdb并允许程序继续?
我正在使用pdb模块调试程序。我想了解如何退出pdb并允许程序继续进行到完成。该程序的运行在计算上很昂贵,所以我不想在脚本未尝试完成的情况下退出。continue
似乎不起作用。如何退出pdb并继续执行我的程序?
回答 0
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!
回答 1
一个简单的Ctrl– D将突破pdb。如果要继续而不是中断,只需按c而不是整个continue
命令
回答 2
@voithos 的答案是正确的,因此在您使用的情况下,我只会添加一个替代方法set_trace
。是的,pdb.set_trace = lambda: None
黑客程序可以正常运行,但是如果您设置了其他断点并希望稍后重新启用它,则不会。对我来说,这表明不幸的pdb
是缺少了许多功能(甚至是基本的东西,如显示列表),这是另一种情况。
好消息是这pdb
,它解决的问题之一就是禁用问题set_trace
。因此,您可以简单地执行以下操作:
pip install pdbpp
然后在(Pdb++)
提示符下键入:
pdb.disable()
如果您以后想要重新启用,那么这很正常:
pdb.enable()
简单!除此之外,您还将获得许多其他有用的东西。
回答 3
如果您确实希望退出调试器,则需要运行WinPdb之类的程序,该程序可让您脱离进程,然后退出调试器(注意,它是多平台的)。
如果您想继续调试但不再在给定的断点处停止,则需要:
- 记下断点号(或文件和行号),
- 无论是
cl bp_number
或clear file:line
永久删除断点或disable pb_number
切换它关闭,但可以切换回来。 - 然后
continue
,您的程序将运行,直到遇到下一个不同的断点为止。
有关上述内容的更多详细信息,请参见手册。
回答 4
找到不安装任何东西而退出pdb的新方法:-当程序开始运行时,按ctrl + c,然后将窗口切换到另一个(任何窗口),然后运行pdb的原始shell应该显示如下内容:(pdb) …..-切换回pdb,然后按Enter,现在一切就绪,pdb命令外壳再次出现