如何在 Python 调试器(PyCharm)中执行 n 步(迭代)?
Posted
技术标签:
【中文标题】如何在 Python 调试器(PyCharm)中执行 n 步(迭代)?【英文标题】:How to take n steps (iterations) in Python debugger (PyCharm)? 【发布时间】:2021-08-14 07:34:07 【问题描述】:我的 Python 调试器中有一个断点。我正在使用 PyCharm。我想迭代让我们说 100 次以达到我要调试的点。
现在我可以按 100 次 Resume Program,但是有没有办法只执行一个命令在断点上运行 n 次。
【问题讨论】:
在您的代码中,是否可以监控一些与当前循环计数器相关的变量?与for i in range(1000)
一样,您可以跟踪i
,然后在i == 100
时设置启用断点的条件。
我可以这样做,但我正在做一些时间序列分析,如果我可以在旅途中进行更改,例如 +100、+200 ...,那将是最方便的
【参考方案1】:
您可以在条件断点中使用函数来计算迭代次数,例如:
条件断点可以调用一个函数,该函数除了返回一个布尔值外,还计算循环迭代的次数。
def your_counter(stop):
global count
count = count + 1
if stop == count:
# count = 0 for periodic break
return True
else:
return False
显示的解决方案适用于单行条件可能不实用和/或需要在外部实现loop counter 的情况。由于断点条件是程序化的,您可以将其实现为定期中断,或根据您想要应用的任何系列/频率标准。
自定义条件将在您想要的确切迭代处中断,在您完成“单步调试”之后,可以按恢复、停止、“运行到光标”,或者禁用断点右键单击它(实际上这会得到你脱离了循环)。
您还可以在调试过程中通过在“变量监视”中进行编辑来更改任何变量的值。
【讨论】:
【参考方案2】:PyCharm 提供了在特定断点上添加条件的可能性。 此功能称为条件断点,您可以找到文档here。
我认为这就是您要寻找的,因为通过这种方式,您只能在特定条件下启用断点。
【讨论】:
非常感谢您,我很高兴我想哭...所有这些时间都花在迭代上...我很自责,因为没有早点搜索。跨度> 我感觉到你 :) 很高兴帮助你!以上是关于如何在 Python 调试器(PyCharm)中执行 n 步(迭代)?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PyCharm 在远程机器上调试从 Python 调用的 C++ 代码?
如何在 python *.py 之前使用命令在 pycharm 中调试?