常用基础调试
- 直接在python脚本中添加
breakpoint(),运行时会自动暂停并进入pdb调试环境。 - 使用
pdb.set_trace(),可以在代码任意位置设置断点,运行时会自动暂停并进入pdb调试环境。 - 使用
pdb.run('python script.py'),可以直接进入pdb调试环境,并运行指定的python脚本。 - 日志记录:使用
tee保存调试过程到文件:python script.py | tee debug.log
🔧 一、启动调试
1. 侵入式(代码内断点)
在需暂停的代码行插入 pdb.set_trace():
import pdb
def example(a, b):
result = a + b
pdb.set_trace() # 程序运行到此暂停
return result
直接运行脚本:python script.py[citation:1][citation:2][citation:7]。
2. 非侵入式(命令行启动)
无需修改代码,通过命令启动调试:
python -m pdb script.py
程序会在第一行自动暂停
⌨️ 二、常用调试命令
| 命令 | 简写 | 作用 |
|---|---|---|
next | n | 执行下一行(不进入函数) |
step | s | 执行下一行(进入函数内部) |
continue | c | 继续运行直到下一个断点或结束 |
print | p | 打印变量值(p x) |
list | l | 显示当前代码上下文(默认11行) |
break | b | 设置断点(b 行号或b 函数名) |
where | w | 显示当前调用栈位置 |
return | r | 执行到当前函数返回 |
quit | q | 退出调试器[citation:1][citation:2][citation:5][citation:7] |
⚡ 三、高级调试技巧
-
条件断点
在循环或特定条件下触发断点:for i in range(10): if i > 5: # 当i>5时暂停 pdb.set_trace() print(i)或通过命令设置:
b 10, i>5(在第10行设置条件) -
调用栈操作
w:查看当前调用栈层次。u/d:在调用栈中向上/向下移动(用于多层函数调试)
-
修改变量值
在调试中动态修改变量:(Pdb) !x = 20 # 将x的值改为20 (Pdb) p x 20使用
!避免与命令冲突 -
跳过循环
until或unt 行号:执行到指定行(跳过循环):(Pdb) unt 15 # 执行至第15行