猿问

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

我已经编写了一个函数来在引发异常时进入 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



牧羊人nacy
浏览 181回答 1
1回答

万千封印

这应该可以解决问题(我已经对其进行了测试,但不确定它是否适用于所有可能的情况):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)
随时随地看视频慕课网APP

相关分类

Python
我要回答