如何在 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 中调试?

如何用pycharm来调试odoo

pycharm如何在debug的时候动态执行python语句

如何使用 PyCharm 调试 Scrapy 项目

idea scala pycharm 如何 动态调试