使用 import pdb; pdb.set_trace() 是 Python 中通过内置调试器 pdb 进行代码调试的常用方法。以下是具体的使用步骤和技巧:
1. 基本用法
在代码中插入 pdb.set_trace(),程序运行到该行时会暂停并进入交互式调试模式。例如:
python
import pdb
def example_function():
a = 1
b = 2
pdb.set_trace() # 程序在此暂停
c = a + b
print(c)
example_function()
运行后,程序会在 pdb.set_trace() 处停止,终端显示 (Pdb) 提示符,表示已进入调试模式citation:2citation:5。
2. 常用调试命令
在 (Pdb) 提示符下,可以使用以下命令:
n(next):执行下一行代码,不进入函数内部citation:2citation:5。s(step):进入函数内部调试citation:2citation:6。c(continue):继续执行,直到下一个断点或程序结束citation:5citation:6。l(list):显示当前代码上下文(前后各5行)citation:5。p <变量名>:打印变量的值(如p a显示变量a的值)citation:2citation:6。q(quit):退出调试并终止程序citation:5。
3. 高级功能
- 修改变量值 :
在调试模式下,使用!直接修改变量(如!a = 10将变量a改为10)citation:2citation:6。 - 设置条件断点 :
通过b <行号>或b <函数名>设置断点(如b 10在第10行设置断点)citation:1citation:5。 - 查看调用栈 :
使用w(where) 显示当前调用栈,u/d上下移动栈帧citation:1citation:3。
4. 替代写法
Python 3.7+ 支持内置函数 breakpoint(),效果与 pdb.set_trace() 相同:
python
def example():
breakpoint() # 等同于 pdb.set_trace()
print("Debugging")
此方式更简洁,且可通过环境变量 PYTHONBREAKPOINT 切换调试工具(如 ipdb)citation:1citation:3。
5. 注意事项
- 多线程/异步程序 :
在异步函数中需使用await pdb.set_trace_async()(Python 3.14+)citation:4。
如需更友好的界面,可尝试增强版调试工具如 ipdb 或 pudb。