python pdb - 跳过循环

时间:2011-07-18 09:48:10

标签: debugging pdb

如何使用pdb.set_trace()跳过循环?

例如,

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

print('Done!')
循环前

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

5 个答案:

答案 0 :(得分:102)

尝试until声明。

转到循环的最后一行并使用until。这将带您到循环之后的下一行。

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

答案 1 :(得分:4)

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

答案 2 :(得分:2)

在接受的答案(https://pymotw.com/3/pdb/)提及的链接中,我发现本节内容会有所帮助:

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

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

enter image description here

enter image description here

enter image description here

它使您免于两件事:必须创建额外的断点,以及必须导航到循环的结尾(尤其是当您可能已经迭代以致无法不重新运行调试器而无法执行操作时)

这是until上的Python文档。顺便说一句,我使用pdb++作为标准调试器的插件(因此格式化),但是until两者的工作原理相同。

答案 3 :(得分:0)

您可以在循环后设置另一个断点,并使用c跳转到断点(调试时):

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

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

答案 4 :(得分:-15)

如果我理解正确的话。

这样做的一种可能方式是:

一旦你得到pdb提示。只需点击n(下一个)10次即可退出循环。

但是,我不知道在pdb中退出循环的方法。

您可以使用r退出功能。