我编写了一个在出现异常时进入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
答案 0 :(得分: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)