有时当我调用ipdb时,我知道我想成为上面设置跟踪的框架。我认为这就是为什么API会公开frame
参数(如the documentation中所讨论的那样)。
所以这里的功能是:
import inspect, ipdb
def invoke_a_frame_up():
ipdb.set_trace(frame=inspect.stack()[i][0])
我试图找出函数中的 i 是什么,以便在调用invoke_a_frame_up
时,跟踪 { {1}}。
或者,更合适的是,我试图弄清楚如何实现这一目标。我已经尝试了每一个我的堆栈深度,并且跟踪似乎从相同的帧开始,直到我大于深度,此时我得到invoke_a_frame_up
。
答案 0 :(得分:1)
import inspect
import ipdb
def dbg_up():
ipdb.set_trace(inspect.currentframe().f_back.f_back)
def foo():
var = 'in foo'
bar()
def bar():
var = 'in bar'
dbg_up()
foo()
vanilla pdb
的用户:您的界面略有不同,如下所示:
pdb.Pdb().set_trace(inspect.currentframe().f_back.f_back)