错误时自动启动python调试器

发布于 2021-01-29 19:31:18

这是我很长时间以来一直想知道的一个问题,但是我从未找到合适的解决方案。如果我运行了一个脚本,但遇到了一个IndexError,则说是python打印错误的行,位置和快速描述,然后退出。遇到错误是否可以自动启动pdb?我不反对在文件顶部添加额外的import语句,也不反对添加几行代码。

关注者
0
被浏览
225
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以使用traceback.print_exc打印异常跟踪。然后使用sys.exc_info提取回溯,最后使用该回溯调用pdb.post_mortem

    import pdb, traceback, sys
    
    def bombs():
        a = []
        print a[0]
    
    if __name__ == '__main__':
        try:
            bombs()
        except:
            extype, value, tb = sys.exc_info()
            traceback.print_exc()
            pdb.post_mortem(tb)
    

    如果您要使用产生异常的框架的局部语言使用code.interact启动交互式命令行,可以执行

    import traceback, sys, code
    
    def bombs():
        a = []
        print a[0]
    
    if __name__ == '__main__':
        try:
            bombs()
        except:
            type, value, tb = sys.exc_info()
            traceback.print_exc()
            last_frame = lambda tb=tb: last_frame(tb.tb_next) if tb.tb_next else tb
            frame = last_frame().tb_frame
            ns = dict(frame.f_globals)
            ns.update(frame.f_locals)
            code.interact(local=ns)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看