通常,当我逐步遍历PDB中的代码时,会得到如下代码:
foo(bar(), qux())
在这种情况下,我有兴趣进入
foo()
,而不是进入bar()
或qux()
。您如何在PDB中做到这一点?
如果我只是在提示符处发出
step
命令,PDB将先跟踪到bar()
,然后跟踪qux()
,然后跟踪到foo()
-当bar()
和qux()
是长函数时,这带来了极大的不便。 最佳答案
我想这是答案,而不仅仅是评论。
当您要运行该行调用时:
foo(bar(), qux())
使用以下命令在
foo()
上添加临时断点:tbreak foo
然后:
c
或
continue
。这将运行bar
和qux
,并在到达foo
代码块时停止。您也可以只使用常规的
b(reak)
。或者,您可以将
s(tep)
分为bar
和qux
,但可以使用:r
或
return
。为了使它们运行起来,直到从它们那里回来。以“仅”两个函数作为参数,这仍然可能会带来相对的不便。您还可以通过有条件地扩展断点的想法,例如如果您知道只想在
foo
赋值为1后调试x
:b foo, x == 1
这样,您可以在代码中运行(或
n(ext)
),并使断点仅在满足条件时触发。关于python - 当同一行上有多个被调用时,如何进入PDB中的特定可调用对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59866604/