为了账号安全,请及时绑定邮箱和手机立即绑定

如何在特定堆栈帧上输入 PDB

如何在特定堆栈帧上输入 PDB

牧羊人nacy 2021-09-28 15:20:33
我已经编写了一个函数来在引发异常时进入 PDB(我们称之为trace_on_error)。现在,当我调用pdb.set_trace()pdb 时,合理地进入了 的堆栈帧trace_on_error,这要求我必须先键入up命令才能查看调用函数的帧。我试图trace_on_error不要求用户知道它是如何实现使用的,因此我想让 pdb 进入调用者堆栈帧。当我寻找文档时,我希望找到类似于 的东西pdb.set_trace(frame_up=1),但我没有找到任何东西。示例代码:def trace_on_error(f, errors):    try:        return f()    except errors as e:        pdb.set_trace()如果您有兴趣查看完整代码而不是最小片段,请参阅此处:https : //github.com/ethomas2/trace/blob/master/trace.py
查看完整描述

1 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

这应该可以解决问题(我已经对其进行了测试,但不确定它是否适用于所有可能的情况):


def trace_on_error(f, errors):

    try:

        return f()

    except errors as e:

        import sys

        from pdb import Pdb

        Pdb().set_trace(sys._getframe().f_back)


查看完整回答
反对 回复 2021-09-28
  • 1 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信