如何使用pdb.set_trace()跳过循环?比如说,
pdb.set_trace()
pdb.set_trace() for i in range(5): print(i) print('Done!')
pdb在循环之前提示。我输入一个命令。所有1-5的值都被返回,然后我希望在print('Done!')执行之前再次提示pdb。
pdb
print('Done!')
c3frrgcw1#
试试until语句。转到循环的最后一行(使用next或n),然后使用until或unt。这将带您到下一行,就在循环之后。http://www.doughellmann.com/PyMOTW/pdb/有很好的解释
until
next
n
unt
1cosmwyk2#
你应该在循环后设置一个断点(“break main.py:4”假设上面的行在一个名为main.py的文件中),然后继续(“c”)。
isr3a4wc3#
在接受的答案(https://pymotw.com/3/pdb/)提到的链接中,我发现这一节更有帮助:要让执行运行到特定的行,请将行号传递给until命令。下面是一个如何使用re:loops的例子:
它使您不必做两件事:必须创建额外的断点,以及必须导航到循环的末尾(特别是当您可能已经迭代过,因此如果不重新运行调试器就无法迭代时)。这是关于until的Python文档。顺便说一下,我使用pdb++作为标准调试器的插入(因此格式化),但until在两者中的工作方式相同。
pdb++
omqzjyyz4#
您可以在循环后设置另一个断点,并使用c跳转到它(在调试时):
c
pdb.set_trace() for i in range(5): print(i) pdb.set_trace() print('Done!')
beq87vna5#
您可以使用tbreak <line number after loop>。tbreak是一个临时断点,在第一次命中时会删除。
tbreak <line number after loop>
tbreak
mec1mxoz6#
如果我没理解错的话。一种可能的方法是:一旦你得到pdb提示符。只需点击n(下一个)10次退出循环。但是,我不知道在pdb中退出循环的方法。你可以使用r来退出一个函数。
r
6条答案
按热度按时间c3frrgcw1#
试试
until
语句。转到循环的最后一行(使用
next
或n
),然后使用until
或unt
。这将带您到下一行,就在循环之后。http://www.doughellmann.com/PyMOTW/pdb/有很好的解释
1cosmwyk2#
你应该在循环后设置一个断点(“break main.py:4”假设上面的行在一个名为main.py的文件中),然后继续(“c”)。
isr3a4wc3#
在接受的答案(https://pymotw.com/3/pdb/)提到的链接中,我发现这一节更有帮助:
要让执行运行到特定的行,请将行号传递给until命令。
下面是一个如何使用re:loops的例子:
它使您不必做两件事:必须创建额外的断点,以及必须导航到循环的末尾(特别是当您可能已经迭代过,因此如果不重新运行调试器就无法迭代时)。
这是关于
until
的Python文档。顺便说一下,我使用pdb++
作为标准调试器的插入(因此格式化),但until
在两者中的工作方式相同。omqzjyyz4#
您可以在循环后设置另一个断点,并使用
c
跳转到它(在调试时):beq87vna5#
您可以使用
tbreak <line number after loop>
。tbreak
是一个临时断点,在第一次命中时会删除。mec1mxoz6#
如果我没理解错的话。
一种可能的方法是:
一旦你得到
pdb
提示符。只需点击n
(下一个)10次退出循环。但是,我不知道在
pdb
中退出循环的方法。你可以使用
r
来退出一个函数。