且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

自动启动python调试器错误

更新时间:2022-02-08 00:11:17

你可以使用 traceback.print_exc 打印例外追踪。然后使用 sys.exc_info 提取回溯,最后调用 pdb.post_mortem 与该追踪

You can use traceback.print_exc to print the exceptions traceback. Then use sys.exc_info to extract the traceback and finally call pdb.post_mortem with that traceback

import pdb, traceback, sys

def bombs():
    a = []
    print a[0]

if __name__ == '__main__':
    try:
        bombs()
    except:
        type, value, tb = sys.exc_info()
        traceback.print_exc()
        pdb.post_mortem(tb)

如果要启动交互式命令行使用 code.interact 使用可以执行异常的框架的本地人

If you want to start an interactive command line with code.interact using the locals of the frame where the exception originated you can do

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)