【发布时间】:2025-12-01 17:40:01
【问题描述】:
除了将所有代码包装在tryexcept 中之外,还有什么方法可以实现与运行python -mpdb script 之类的脚本相同的功能吗?我希望能够在引发异常时查看出现了什么问题。
【问题讨论】:
除了将所有代码包装在tryexcept 中之外,还有什么方法可以实现与运行python -mpdb script 之类的脚本相同的功能吗?我希望能够在引发异常时查看出现了什么问题。
【问题讨论】:
如果您不想修改源代码,您可以从 ipython 运行它 - 一个增强的交互式 python shell。
例如运行 ipython 然后执行 %pdb on 以启用事后调试。然后%run scriptname 将运行脚本并在任何未捕获的异常上自动进入调试器。
或者%run -d scriptname 将在调试器中启动脚本。
【讨论】:
python -i script
当引发异常时,您将留在交互式 shell 中;那么
import pdb
pdb.pm()
会将您放入事后调试器中,以便您可以进行所有常规调试。
只要您的脚本不调用 sys.exit,这应该可以工作。 (哪些脚本不应该这样做,因为它破坏了这种非常有用的技术!并且使它们更难编写测试。)
【讨论】:
import pdb; pdb.set_trace()
【讨论】:
pdb.set_trace 的行。我希望它在引发异常时自动停止。