我将尝试在简单的示例程序上解释我的问题(我的问题要复杂得多,因为我的程序要复杂得多)。
假设我有一个程序,有 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()
?
换句话说,有没有办法执行以下任一操作:
- 调试,并指定
long_one()
应在 RUN 模式下处理 - 或 RUN 并指定应调试
short_one()
?
最佳答案
正如 Asagen 所提议的:
- 将调试器附加到 python 控制台。
- 在运行模式下启动我的脚本
- 在脚本运行时,我执行了
工具/附加到进程
并选择了我的进程。
调试器从我执行此操作的那一刻起就开始运行,并在遇到的第一个断点处停止。
<小时/>有一个不便之处 - 我必须知道何时开始调试(在哪一刻将调试器附加到进程)。我提出一个解决方法:
- 在代码中您想要开始调试的位置添加无限循环(见下文):
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/