python - 如何告诉Python调试器完成程序?

标签 python debugging pdb

我最近遇到了一个非常酷的 Python 模块,名为 pdb 。对于那些不熟悉它的人来说,它非常易于使用,并且可以让您访问当时范围内的几乎所有内容。要使用它,您所要做的就是 import pdb 并将此行放入您要设置断点的程序中:

pdb.set_trace()

它的工作方式非常类似于gdb,如果它在某种程度上是建立在其之上的,我不会感到惊讶。无论如何,我想知道的是:

假设我已经停在第一个断点处,评估了一些事情,现在我想完成我的程序。如何告诉调试器完成程序,而不在任何断点处停止?有一些命令,例如 continuestepnext,但这些命令似乎都不能不间断地运行程序的其余部分。有人有这方面的经验吗?还是我要求的东西不存在?谢谢!

最佳答案

我只需重写 pdb.set_trace 函数,删除所有断点并继续

pdb.set_trace = lambda : 0

好处是您可以在调试器中进行猴子修补。

vikasdhi@redpanda:~$ cat ~/tmp/test.py
for i in range(1000):
    import pdb
    pdb.set_trace()
vikasdhi@redpanda:~$ python ~/tmp/test.py
> /home/vikasdhi/tmp/test.py(1)<module>()
-> for i in range(1000):

第一次停止

(Pdb) c
> /home/vikasdhi/tmp/test.py(1)<module>()
-> for i in range(1000):
(Pdb) c
> /home/vikasdhi/tmp/test.py(1)<module>()
-> for i in range(1000):

当我想跳过所有内容时,我只需替换该函数

(Pdb) pdb.set_trace = lambda : 0
(Pdb) c
vikasdhi@redpanda:~$ 

关于python - 如何告诉Python调试器完成程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17116955/

相关文章:

c# - Visual Studio Package - 如何获取本地窗口中的信息?

c# - 增加 Visual Studio 中的调试项计数

python - 当信号被捕获时,如何强制 PDB 退出?

python - 使用 python3.9 的 gdbm 无法打开使用 python 3.6 的 gdbm 创建的文件

python - 属性错误 : 'SelectorList' object has no attribute 'replace'

java - 在 Eclipse 中调试 List<Class> 对象?

python - 使用 pdb 附加进程

python - Jupyter Notebook 中的 %debug - 访问丢失的回溯帧

python - Pandas 数据帧 : How to groupby and sort "by blocks"?

python - Pandas 数据透视多索引表,无聚合