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
的情况很可能不是这样。