pdb是python内置的调试工具, 它可以在终端中调试Python程序, 这允许pdb在很多无法安装IDE的服务器上使用.
虽然远程调试使用广泛, 但在必要的时候(比如难以在本地搭建运行环境)pdb仍然是一个便利的选择.
我们可以在python源代码中设置断点:
import pdb
def func():
for i in range(100):
pdb.set_trace() # set breakpoint
print(i)
随后执行源文件, pdb.set_trace()
会如同一个断点阻塞当前Python进程进入pdb终端.或者使用python -m pdb test.py
指令从第一行开始调试进入.
test.py(5)<module>()
-> print(i)
(Pdb)
pdb终端会显示文件名, 行号,当前文件, 下一行指令等信息.并等待用户指令:
-
c
/continue
: 继续执行, 直至进程完成或被断点阻塞 -
n
/next
: 执行下一条指令, 若遇函数直接得到函数返回值, 不进入 -
s
/step
: 步进执行下一条指令,若遇函数则进入执行 -
r
/return
: 跳出当前函数, 返回调用栈的上一层 -
b
/breakpoint [<line_num>]
: 在指定行(下一条指令处)设置一个断点:b
,b 5
-
a
/args
: 显示当前函数的参数 -
q
/exit
: 中止进程执行 -
l
/list
: 显示下一条指令所在的代码块 -
pp <obj_name>
: 显示某个对象的值 -
disable / enable <line_num>
: 禁用/启用某行上的断点 -
condition [<line_num>] <condition>
: 在指定行上设置条件断点.如:condition 5 i==3
-
!<expr>
: 动态执行一条语句, 可以是赋值等指令:!i=2
,!1==1
.
参考资料: