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:2][citation:5]。

2. 常用调试命令

(Pdb) 提示符下,可以使用以下命令:

  • n (next):执行下一行代码,不进入函数内部[citation:2][citation:5]。
  • s (step):进入函数内部调试[citation:2][citation:6]。
  • c (continue):继续执行,直到下一个断点或程序结束[citation:5][citation:6]。
  • l (list):显示当前代码上下文(前后各5行)[citation:5]。
  • p <变量名> :打印变量的值(如 p a 显示变量 a 的值)[citation:2][citation:6]。
  • q (quit):退出调试并终止程序[citation:5]。

3. 高级功能

  • 修改变量值
    在调试模式下,使用 ! 直接修改变量(如 !a = 10 将变量 a 改为10)[citation:2][citation:6]。
  • 设置条件断点
    通过 b <行号>b <函数名> 设置断点(如 b 10 在第10行设置断点)[citation:1][citation:5]。
  • 查看调用栈
    使用 w (where) 显示当前调用栈,u/d 上下移动栈帧[citation:1][citation:3]。

4. 替代写法

Python 3.7+ 支持内置函数 breakpoint(),效果与 pdb.set_trace() 相同:

python 复制代码
def example():
    breakpoint()  # 等同于 pdb.set_trace()
    print("Debugging")

此方式更简洁,且可通过环境变量 PYTHONBREAKPOINT 切换调试工具(如 ipdb)[citation:1][citation:3]。

5. 注意事项

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

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