pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括 设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量 的值等。
1. 设置断点的两种方式 1.1 侵入式方法需要在被调试的代码中添加一行代码,然后再正常运行代码。
import pdb pdb.set_trace()1.2 非侵入式方法
不用额外修改源代码,在命令行下直接运行就能调试。使用方式如下:
python3 -m pdb test.py
会自动停在第一行,等待调试。然后可以使用几个关键命令进行调试。
#设置断点的方法 (Pdb)b 10 #断点设置在本py的第10行 或(Pdb)b test.py:20 #断点设置到 test.py第20行 #删除断点的方法 (Pdb)b #查看断点编号 (Pdb)cl 2 #删除第2个断点 (Pdb)p param #查看当前 变量值 (Pdb)l #查看运行到某处代码 (Pdb)a #查看全部栈内变量2. 调试命令
pdb 提供了一些常用的调试命令,如下表所示。
| 命令 | 说明 |
|---|---|
| help | 帮助 |
| break 或 b | 设置断点 |
| tbreak(temporary break) | 临时断点,在第一次执行到这个断点之后,就自动删除这个断点,用法和b一样 |
| clear或cl | 清楚断点 |
| continue 或 c | 继续执行程序调至下一个断点 |
| list 或 l | 查看当前行的代码段(前后11行) |
| ll | 查看当前函数或框架的所有源代码 |
| next 或 n | 执行下一行(不会进入函数体) |
| step 或 s | 执行下一行(能够进入函数体) |
| return 或 r | 执行下一行(在函数中时会直接执行到函数返回处) |
| exit 或 q | 中止并退出 |
| a或者args | 查看全部栈内变量 |
| p | 打印变量 |
| pp | 打印变量的值 |
| a | 查看函数参数,在函数中时打印函数的参数和参数的值 |
| unt或until(unt lineno) | 持续执行直到运行到指定行(或遇到断点) |
| j lineno或jump | 直接跳转到指定行(注意,被跳过的代码不执行) |



