pdb.set_trace() 是 Python 中通过内置调试器, 可换成ipdb 或 pudb调试

使用 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 切换调试工具(如 ipdbcitation:1citation:3

5. 注意事项

  • 多线程/异步程序
    在异步函数中需使用 await pdb.set_trace_async()(Python 3.14+)citation:4

如需更友好的界面,可尝试增强版调试工具如 ipdbpudb