如何在Python的Pdb调试中自动打印断点处的变量值?
在Pdb断点处自动打印变量的方法
当然有办法,Pdb提供了两种常用方式实现断点触发时自动打印变量:
方法一:给断点绑定自动执行命令
通过commands命令为指定断点绑定要自动运行的指令,只有当该断点触发时才会执行这些命令:
- 先设置断点:
(Pdb) b 9 Breakpoint 1 at /tmp/program.py:9
- 输入
commands+ 断点编号(这里是1)进入命令编辑模式:
(Pdb) commands 1
- 在
(com)提示符下输入要自动执行的打印命令,比如打印i:
(com) p i
- 输入
end结束命令绑定:
(com) end
之后每次触发该断点时,就会自动打印变量值:
(Pdb) c > /tmp/program.py(9)<module>() -> b = compute(i) i = 12 (Pdb) c > /tmp/program.py(9)<module>() -> b = compute(i) i = 3
方法二:使用display全局跟踪变量
display命令会在程序每次暂停(包括断点触发、step/next执行暂停等)时自动显示指定变量的值,属于全局跟踪:
- 设置断点后,直接执行
display命令跟踪目标变量:
(Pdb) b 9 Breakpoint 1 at /tmp/program.py:9 (Pdb) display i display i: 12
- 执行
continue后,每次停在断点都会自动显示变量:
(Pdb) c > /tmp/program.py(9)<module>() -> b = compute(i) display i: 3 (Pdb) c > /tmp/program.py(9)<module>() -> b = compute(i) display i: 4
如果要取消跟踪,执行undisplay i即可。
内容的提问来源于stack exchange,提问作者Hamid Rouhani
相关产品推荐
相关产品推荐

