python - 仅调试一个函数(或模块),在 Pycharm 中运行其余程序?

标签 python debugging pycharm

我将尝试在简单的示例程序上解释我的问题(我的问题要复杂得多,因为我的程序要复杂得多)。

假设我有一个程序,有 2 行,有 2 个函数:

data = long_one()  #takes 2 hours in DEBUG mode, 15min in RUN mode
short_one(data)    #i want to DEBUG this one

我们还可以说,准备 data 变量非常困难,获取它的唯一方法是运行函数 long_one()。

有没有办法在 Pycharm 中运行 long_one() 和调试 short_one() ? 换句话说,有没有办法执行以下任一操作:

  1. 调试,并指定 long_one() 应在 RUN 模式下处理
  2. 或 RUN 并指定应调试 short_one()

最佳答案

正如 Asagen 所提议的:

  1. 将调试器附加到 python 控制台。
  2. 在运行模式下启动我的脚本
  3. 在脚本运行时,我执行了工具/附加到进程并选择了我的进程。

调试器从我执行此操作的那一刻起就开始运行,并在遇到的第一个断点处停止。

<小时/>

有一个不便之处 - 我必须知道何时开始调试(在哪一刻将调试器附加到进程)。我提出一个解决方法:

  1. 在代码中您想要开始调试的位置添加无限循环(见下文):
<小时/>
data = long_one()  # takes 2 hours in DEBUG mode, 15min in RUN mode
infinite_loop = True
print "OK man, it is the time to start debugging!"
while infinite_loop:
    time.sleep(0.2)   # add breakpoint here
short_one(data)    #i want to DEBUG this one
<小时/>
  • 在 while 循环内添加断点
  • 运行进程时,当您在控制台中看到打印文本“OK man,是时候开始调试了!”时,请将调试器附加到进程。
  • 接下来,当它在无限循环中停止时,计算代码片段 infinite_loop = False,以便离开循环
  • 就是这样,在之前运行了整个代码之后,您现在处于 DEBUG 模式,

    如果你想回到运行模式,只需停止调试器即可。可以在您想要的任何位置多次在运行和调试之间切换

    关于python - 仅调试一个函数(或模块),在 Pycharm 中运行其余程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34789306/

    相关文章:

    Python 对象保留以前的数据?

    python - python中类方法的自解封

    javascript - 如何让 Javascript 调试与我的 ASP.NET MVC 应用程序一起工作?

    python - 如何从 PyCharm 项目获取我的 "exe"

    float() 的 Python 无效文字

    debugging - WinDbg - 寻找 NullPointerException... - 下一步去哪里?

    google-chrome - 启动 Chrome 并在启动时暂停 JS 脚本

    html - django 将 html href 和 src 替换为 {% static %} 标签

    python - 当多处理进程打开另一个进程时程序在调试中挂起

    Python分割字符串索引超出范围