Bur*_*dui 3 exception python-3.x ipdb
我只是好奇是否存在 ipdb 调试器跳回引发异常的源的命令。
考虑下面的小程序。
import sys
import random
def somefun():
someval = random.random()
raise Exception()
def run():
try:
somefun()
except Exception:
sys.exit(10)
Run Code Online (Sandbox Code Playgroud)
run当从命令行(使用 ipython-console)运行该函数时,它会按应有的值以 10 退出。有没有办法启动事后调试器( )并通过跳回pdb.pm()获取值?someval
Run Code Online (Sandbox Code Playgroud)except Exception: sys.exit(10)有没有办法……通过跳回来获得 someval 的值?
不,它已经消失了。您的错误处理程序吞掉了异常并执行了 python 认为“正常”的操作,尽管父进程会将非零退出状态解释为错误。
当您处于调试上下文中时,引发致命的 python 错误。这是一种方法:
except Exception:
if debug:
raise
else:
sys.exit(10)
Run Code Online (Sandbox Code Playgroud)
然后调用 as$ python -m pdb some_script.py可以让您检查回溯和值:
(Pdb) bt
Run Code Online (Sandbox Code Playgroud)
和
(Pdb) p someval
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1886 次 |
| 最近记录: |