我最近发现了Python非常有用的'-i'标志
-i : inspect interactively after running script, (also PYTHONINSPECT=x) and force prompts, even if stdin does not appear to be a terminal
这对于检查全局范围内的对象非常有用,但是如果在函数调用中引发异常会发生什么,并且我想检查函数的局部变量?当然,我对首次提出异常的范围感兴趣,有什么方法可以实现吗?
答案 0 :(得分:5)
在ipython中,您可以在代码崩溃的位置检查变量,而无需修改它:
>>> %pdb on
>>> %run my_script.py
答案 1 :(得分:5)
在交互式提示下,立即输入
>>> import pdb
>>> pdb.pm()
pdb.pm()是“post-mortem”调试器。它会将您置于引发异常的范围,然后您可以使用通常的pdb命令。
我一直使用 。它是标准库的一部分(不需要ipython),也不需要在源代码中编辑调试命令。
唯一的诀窍就是记住马上做;如果先键入任何其他命令,则会丢失发生异常的范围。
答案 2 :(得分:4)
使用ipython:http://mail.scipy.org/pipermail/ipython-user/2007-January/003985.html
用法示例:
from IPython.Debugger import Tracer; debug_here = Tracer()
#... later in your code
debug_here() # -> will open up the debugger at that point.
“调试器激活后,您可以使用其所有常规命令 单步执行代码,设置断点等。请参阅pdb文档 从Python标准库中获取用法细节。“