PDB 事后调试:在异常处理程序中退出后跳转到引发异常



我只是好奇是否存在 ipdb 调试器跳回到引发异常源的命令。

考虑以下小程序。

import sys
import random
def somefun():
someval = random.random()
raise Exception()
def run():
try:
somefun()
except Exception:
sys.exit(10)

当从命令行(使用 ipython-console (运行run函数时,它会按预期以 10 退出。 有没有办法启动事后调试器(pdb.pm()(并通过跳回来获取someval的值?

except Exception:
sys.exit(10)

有没有办法...通过跳回去获得 someval 的价值?

不。它消失了。您的错误处理程序吞下了异常 并做了一些 Python 认为"正常"的事情, 尽管父进程会将非零退出状态解释为错误。

在调试上下文中引发致命的 python 错误。 这是一种方法:

except Exception:
if debug:
raise
else:
sys.exit(10)

然后调用$ python -m pdb some_script.py会让你 通过以下方式检查回溯和值:

(Pdb) bt

(Pdb) p someval

相关内容

  • 没有找到相关文章

最新更新