Debugging PythonPDB-跳过循环

Debugging PythonPDB-跳过循环,debugging,pdb,Debugging,Pdb,如何使用pdb.set_trace()跳过循环 比如说, pdb.set_trace() for i in range(5): print(i) print('Done!') pdb在循环前提示。我输入一个命令。返回所有1-5个值,然后在执行print('Done!')之前,我希望再次收到pdb的提示。如果我理解正确的话 一种可能的方法是: 一旦收到pdb提示。只需点击n(下一步)10次即可退出循环 但是,我不知道如何退出pdb中的循环 您可以使用r退出函数。您应该在循环后设置一个

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

比如说,

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

print('Done!')

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

如果我理解正确的话

一种可能的方法是:

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

但是,我不知道如何退出
pdb
中的循环


您可以使用
r
退出函数。

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

尝试该语句

转到循环的最后一行(使用
next
n
),然后使用
直到
unt
。这将带您进入下一行,就在循环之后


有一个很好的解释

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

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

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

在已接受答案()中提到的链接中,我发现这一部分更有帮助:

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

下面是一个例子,说明了如何在循环中工作:

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


下面是Python文档。顺便说一句,我使用的是标准调试器(因此是格式)的下拉菜单,但是
直到
在这两个调试器中的工作方式相同。

如果循环是10000000呢?你的答案很明显。从文章中:使用
n
转到for循环的最后一行,然后键入
直到
。这将一直持续到至少超出当前行。也适用于列表理解。你不必关心最后一行。如果去循环的最后一行很麻烦,你会怎么做?R的
debug
函数使用的
f
“完成当前循环或函数的执行”(finished execution of the current loop or function)()真的没有等价物吗?使用
直到
(或其缩写形式
unt
)而不带参数时,将始终向下一行(除非您点击返回语句),因此,您也可以多次使用它,而不是
n
。它不适用于
python3
中循环中设置的
breakpoint()
VB编辑器
可以“动态”接受断点,但
pdb
的情况很可能不是这样。