我有一个.py
具有许多功能的文件。现在,我正在调试代码,发现有时程序被卡在某个地方。
如果我只是将其留在那里并等待超长时间,则会显示错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 9, in generate
File "<stdin>", line 7, in choosePath
MemoryError
我不知道它被卡住,因为我有几个while
和for
循环。有没有简单的方法来弄清楚,很容易?我真的很不愿意调试一个循环。
点击CTRL-C查看回溯。
例如,以下代码将达到永无止境的循环:
import time
def foo():
while True:
time.sleep(1)
def bar():
for i in range(10):
foo()
bar()
当我打断它时,我看到:
$ bin/python endless_demo.py
^CTraceback (most recent call last):
File "test.py", line 11, in <module>
bar()
File "test.py", line 9, in bar
foo()
File "test.py", line 5, in foo
time.sleep(1)
KeyboardInterrupt
追溯结束于foo
第5行的。这是我中断程序时Python繁忙的地方。追溯还告诉我,第一个bar()
被称为,即foo()
,所以我可以看到我们是如何到达那里的。
请注意,如果您有一个裸露的 except
处理程序,则不一定有效;捕获所有的例外try:
except:
捕获KeyboardInterrupt
了。始终except Exception:
至少使用以防止捕获系统异常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句