您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

对Python调试工具有何建议?

对Python调试工具有何建议?

不要忘记事后调试!引发异常后,所有本地变量的堆栈框架都包含在中sys.last_traceback。您可以pdb.pm()转到引发异常的堆栈帧,然后p(retty)p(rint)thelocals()

这是一个使用此信息从堆栈中提取局部变量的函数

def findlocals(search, startframe=None, trace=False):

    from pprint import pprint
    import inspect, pdb

    startframe = startframe or sys.last_traceback
    frames = inspect.getinnerframes(startframe)

    frame = [tb for (tb, _, lineno, fname, _, _) in frames
             if search in (lineno, fname)][0]

    if trace:
        pprint(frame.f_locals)
        pdb.set_trace(frame)
    return frame.f_locals

用法

>>> def screwyFunc():
    a = 0
    return 2/a

>>> screwyFunc()

Traceback (most recent call last):
  File "<pyshell#62>", line 1, in <module>
    screwyFunc()
  File "<pyshell#55>", line 3, in screwyFunc
    return 2/a
ZeroDivisionError: integer division or modulo by zero
>>> findlocals('screwyFunc')
{'a': 0}
python 2022/1/1 18:44:16 有307人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶