92

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

例如,

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

print('Done!')

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

4

5 回答 5

150

试试这个until说法。

转到循环的最后一行(使用nextor n),然后使用untilor unt。这将带你到下一行,就在循环之后。

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

于 2012-03-25T16:08:58.930 回答
4

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

于 2011-10-08T06:46:34.287 回答
2

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

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

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

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

它使您免于两件事:必须创建额外的断点,并且必须导航到循环的末尾(尤其是当您可能已经迭代,以至于如果不重新运行调试器就无法完成)。

这是until. 顺便说一句,我pdb++用作标准调试器的插件(因此格式化),但until两者的工作方式相同。

于 2020-04-11T02:21:43.720 回答
1

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

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

pdb.set_trace()
print('Done!')
于 2019-06-19T08:02:30.130 回答
-17

If I understood this correctly.

One possible way of doing this would be:

Once you get you pdb prompt . Just hit n (next) 10 times to exit the loop.

However, I am not aware of a way to exit a loop in pdb.

You could use r to exit a function though.

于 2011-10-07T00:06:58.830 回答