如何使用 pdb 跳过循环?

问题描述 投票:0回答:6

如何使用

pdb.set_trace()
跳过循环?

例如,

pdb.set_trace()
for i in range(5):
     print(i)

print('Done!')
循环前有

pdb
提示。我输入一个命令。返回所有 1-5 值,然后我希望在
pdb
执行之前再次收到
print('Done!')
提示。

python debugging pdb
6个回答
174
投票

尝试使用

until
语句。

转到循环的最后一行(使用

next
n
),然后使用
until
unt
。这将带您进入下一行,就在循环之后。

http://www.doughellmann.com/PyMOTW/pdb/有很好的解释


5
投票

您应该在循环后设置一个断点(“break main.py:4”,假设上述行位于名为 main.py 的文件中),然后继续(“c”)。


3
投票

在已接受的答案提到的链接中(https://pymotw.com/3/pdb/),我发现本节更有帮助:

要让执行运行到特定行,请将行号传递给 直到命令。

这是一个如何工作的示例:循环:

它使您免于两件事:必须创建额外的断点,以及必须导航到循环的末尾(特别是当您可能已经进行迭代时,如果不重新运行调试器就无法做到这一点)。

这里是

until
上的 Python 文档。顺便说一句,我使用
pdb++
作为标准调试器的替代项(因此是格式设置),但
until
在两者中的工作原理相同。


1
投票

您可以在循环后设置另一个断点并使用

c
:

跳转到该断点(调试时)
pdb.set_trace()
for i in range(5):
    print(i)

pdb.set_trace()
print('Done!')

0
投票

您可以使用

tbreak <line number after loop>
tbreak
是一个临时断点,第一次点击时会被删除。


-19
投票

如果我理解正确的话。

一种可能的方法是:

一旦出现

pdb
提示。只需按
n
(下一个)10 次即可退出循环。

但是,我不知道如何退出

pdb
中的循环。

您可以使用

r
退出函数。

© www.soinside.com 2019 - 2024. All rights reserved.