Python 如何在特定堆栈帧上输入PDB
我编写了一个函数,用于在引发异常时输入PDB(我们称之为Python 如何在特定堆栈帧上输入PDB,python,pdb,Python,Pdb,我编写了一个函数,用于在引发异常时输入PDB(我们称之为trace\u on\u error)。现在当我调用pdb时,set_trace()pdb合理地进入trace_on_error的堆栈框架,要求我必须键入up命令才能查看调用函数的框架 我试图让跟踪错误不要求用户知道如何使用它,因此我想让pdb进入调用者堆栈框架。在我查找文档时,我希望找到类似于pdb.set\u trace(frame\u up=1)的东西,但我没有找到任何东西 示例代码: def trace_on_error(f, er
trace\u on\u error
)。现在当我调用pdb时,set_trace()
pdb合理地进入trace_on_error
的堆栈框架,要求我必须键入up
命令才能查看调用函数的框架
我试图让跟踪错误不要求用户知道如何使用它,因此我想让pdb进入调用者堆栈框架。在我查找文档时,我希望找到类似于pdb.set\u trace(frame\u up=1)
的东西,但我没有找到任何东西
示例代码:
def trace_on_error(f, errors):
try:
return f()
except errors as e:
pdb.set_trace()
如果您有兴趣查看完整的代码而不是最小的代码片段,请参阅此处:这应该可以做到(我已经测试过了,但不确定它是否适用于所有可能的情况):
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)