我已经编写了一个函数来在引发异常时进入 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)
添加回答
举报
0/150
提交
取消