pythonipdb.set_跟踪()一帧“向上”(帧=?)

2024-03-28 12:16:32 发布

您现在位置:Python中文网/ 问答频道 /正文

有时当我调用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被调用时,跟踪不是invoke_a_frame_up内。在

或者,更恰当地说,我正试图找出如何实现这一目标。我尝试了每一个I来确定堆栈的深度,不管怎样,跟踪似乎都是从同一帧开始的,直到I大于深度,此时我得到IndexError('list index out of range',)。在


Tags: the函数importapi参数defdocumentationtrace
1条回答
网友
1楼 · 发布于 2024-03-28 12:16:32
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()

vanillapdb的用户:您的界面略有不同,如下所示:

^{pr2}$

相关问题 更多 >