在独立的 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 捕获未捕获的异常并打印或记录它们。如果我安装上面的钩子(Hook),程序只有在按 Ctrl-C 时才会进入事后模式,这有点晚了。 :-)
有没有办法在不给 Tornado 打猴子补丁的情况下实现这一点?
最佳答案
您可以继承tornado的IOLoop并覆盖handle_callback_exception。请参阅http://www.tornadoweb.org/en/stable/ioloop.html#tornado.ioloop.IOLoop.handle_callback_exception
不过,我想这与猴子补丁没有太大区别......
关于python - 在 Tornado 的 ioloop 中出现异常时启动 pdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20660657/