如何检查Python引发异常的函数的范围?

saf*_*fsd 1 python debugging

我最近发现了Python非常有用的'-i'标志

-i     : inspect interactively after running script, (also PYTHONINSPECT=x)
         and force prompts, even if stdin does not appear to be a terminal

这是伟大的,在全球范围内检查的对象,但会发生什么,如果异常被函数调用中长大,我想检查函数的局部变量?当然,我对首次提出异常的范围感兴趣,有什么办法可以实现吗?

Eri*_*got 5

在ipython中,您可以在代码崩溃的位置检查变量,而无需修改它:

>>> %pdb on
>>> %run my_script.py
Run Code Online (Sandbox Code Playgroud)


Vic*_*ler 5

在交互式提示符下,立即键入

>>> import pdb
>>> pdb.pm()
Run Code Online (Sandbox Code Playgroud)

pdb.pm()是"post-mortem"调试器.它会将您置于引发异常的范围,然后您可以使用通常的pdb命令.

一直都在用这个.它是标准库的一部分(不需要ipython),也不需要在源代码中编辑调试命令.

唯一的诀窍就是记住马上做; 如果先键入任何其他命令,则会丢失发生异常的范围.