Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在特定堆栈帧上输入PDB_Python_Pdb - Fatal编程技术网

Python 如何在特定堆栈帧上输入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

我编写了一个函数,用于在引发异常时输入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, 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)