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.
参考资料: