2013-02-08 90 views

回答

3

您可能需要ipython -i yourscript.py,它将在解释器环境中执行脚本。但是这不会让你检查发生异常的本地环境,例如函数中的局部变量 - 你只能检查全局变量。你可能想这个:

In [1]: %run test.py 
<exception occurs> 
In [2]: %debug test.py 

如果你不熟悉使用PDB,请some docs第一。

编辑感谢托马斯K

+1

或者,当你运行一个程序并引发错误时,只需调用'%debug'跳转到调试器。同样的效果,但你不需要提前计划。 – 2013-02-08 18:55:30

+1

哇,太棒了! – Thomas 2013-02-08 22:52:48

0

是的,这取决于你如何设置。你可以导入你的程序并像其他模块一样在try块内运行。

import yourprogram 
try: 
    yourprogram.main_function(args) 
except: 
    print "we blew up, investigate why" 

如果您的程序不在函数中,您可能需要将try块放在导入区域。

这种方法的问题是您想要查看的变量可能不再在范围内。我通常在不同的地方使用打印语句或日志消息来找出看起来不像我期待的东西。

+0

如果您采用这种方法,至少应打印出异常和堆栈跟踪 - 这些通常比“我们炸毁”更有用。 – Thomas 2013-02-08 22:52:12