Python 使用PDB单步执行表达式中的非最内层调用

Python 使用PDB单步执行表达式中的非最内层调用,python,pdb,Python,Pdb,考虑这样一段代码: 断点() x=foo(bar(baz())) 在PDB(或PDB++)中,step命令通常会进入baz()函数 我如何才能单步调用bar()或baz()而不是baz()?我在PDB或PDB++文档中没有看到任何与此相关的内容。查看调试器命令列表 您可以在foo或bar中使用break设置断点,也可以使用tbreak设置临时断点: $ python3 x.py > /tmp/0/x.py(14)<module>() -> x=foo(bar(baz(

考虑这样一段代码:

断点()
x=foo(bar(baz()))
在PDB(或PDB++)中,
step
命令通常会进入
baz()
函数


我如何才能单步调用
bar()
baz()
而不是
baz()
?我在PDB或PDB++文档中没有看到任何与此相关的内容。

查看调试器命令列表

您可以在foo或bar中使用
break
设置断点,也可以使用
tbreak
设置临时断点:

$ python3 x.py 
> /tmp/0/x.py(14)<module>()
-> x=foo(bar(baz(42)))
(Pdb) break foo
Breakpoint 1 at /tmp/0/x.py:1
(Pdb) continue
> /tmp/0/x.py(2)foo()
-> ret=x+1
$ python3 x.py 
> /tmp/0/x.py(14)<module>()
-> x=foo(bar(baz(42)))
(Pdb) step
--Call--
> /tmp/0/x.py(9)baz()
-> def baz(x):
(Pdb) return
--Return--
> /tmp/0/x.py(11)baz()->45
-> return ret
(Pdb) step
--Call--
> /tmp/0/x.py(5)bar()
-> def bar(x):
(Pdb) return
--Return--
> /tmp/0/x.py(7)bar()->47
-> return ret
(Pdb) step
--Call--
> /tmp/0/x.py(1)foo()
-> def foo(x):