在独立的 Python 程序中执行此操作通常很有用:
def excepthook(typ, value, tb):
traceback.print_exception(typ, value, tb)
pdb.pm()
...
if log.getEffectiveLevel() == logging.DEBUG:
sys.excepthook = excepthook
(即如果发生未捕获的异常,程序将进入pdb
事后分析模式)
但这不适用于 Tornado ioloop bc 似乎 ioloop 捕获未捕获的异常并打印或记录它们。如果我安装上面的钩子,程序只有在按下 Ctrl-C 时才会进入事后模式,这有点晚了。:-)
有没有办法在没有猴子修补龙卷风的情况下实现这一目标?