【问题标题】:How can I make python go into interactive mode only if it dies on exception?仅当它因异常而死时,如何才能使 python 进入交互模式?
【发布时间】:2013-06-11 00:46:00
【问题描述】:

有没有办法调用一个 python 程序,如果它没有死,它会正常运行,但如果它有一个未捕获的异常,表现得好像它是用-i 运行的?

原因是我正在从外部脚本运行我的 python 程序,并且直到多次运行它才会遇到异常情况。所以我只想懒惰地进入交互模式,然后我可以加载调试模块并查看事后分析以查看堆栈变量,但不要让它落入交互式提示中,以便所有成功的程序早期运行。

【问题讨论】:

标签: python


【解决方案1】:

将一个函数填充到sys.excepthook 中,该函数使用code 创建一个控制台。

【讨论】:

  • 哦,哇,很难用谷歌搜索一个名为 code 的模块。编辑:太棒了!
  • 哦,这太棒了。实际上,我一直在寻找一种在昨天因异常而死之前注入交互式提示的方法!我打算接受事后分析(这很有帮助,有一个堆栈 var 快照!)
  • 嘿,有没有办法挤压pdb 以使用excepthook 之类的异常运行?
  • @StevenLu,只需运行python -m pdb buggycode.py 即可在未捕获的异常上进入调试器。请注意,您需要在开始时按一次c 才能开始执行。
猜你喜欢
  • 2019-01-27
  • 2012-11-06
  • 2018-09-20
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多