在ipython中遇到异常时停止Python程序的执行
我有一个运行很久的Python程序,在某个时刻会出现错误。有没有办法在ipython会话中运行这个程序,并在出现错误时暂停,这样我就可以查看当时的实时数据?
2 个回答
0
是的,这要看你是怎么设置的。你可以像使用其他模块一样导入你的程序,并在一个try except块里运行它。
import yourprogram
try:
yourprogram.main_function(args)
except:
print "we blew up, investigate why"
如果你的程序不是在一个函数里,你可能需要把try块放在导入语句的周围。
这种方法的问题在于,你想查看的变量可能不再可用。通常我会在不同的地方使用打印语句或者日志信息,来找出哪里和我预期的不一样。
3
你可能想用 ipython -i yourscript.py
这个命令,它会在解释器环境中执行你的脚本。不过,这样做的话,你无法查看发生错误时的本地环境,比如函数内部的局部变量——你只能查看全局变量。你可能更想要的是这个:
In [1]: %run test.py
<exception occurs>
In [2]: %debug test.py
如果你对使用 PDB 还不太熟悉,可以先看看 这份文档。
感谢 Thomas K 的编辑