Python调试技巧教程_pdb断点调试实战

Python调试最直接有效的方式是使用内置pdb模块,支持断点设置(breakpoint()或pdb.set_trace())、命令行启动(python -m pdb)及异常后自动调试(post_mortem)。

Python调试最直接有效的方式就是用内置的 pdb 模块做断点调试。它不需要额外安装,命令简洁,适合快速定位变量状态、执行流程和逻辑错误。

在代码中插入断点

最常用的方法是在想暂停的位置加一行:import pdb; pdb.set_trace()(Python 3.7+ 可直接用 breakpoint())。

  • 运行脚本时,执行到这行会立即进入交互式调试界面,显示当前行和上下文
  • breakpoint() 是推荐写法,它会自动检查环境变量 PYTHONBREAKPOINT,方便统一关闭或替换调试器
  • 调试完记得删掉或注释掉断点语句,避免上线后意外中断

常用pdb命令速查

进入调试模式后,输入命令控制执行。几个高频指令:

  • n(next):执行下一行,不进入函数内部
  • s(step):进入当前行调用的函数
  • c(continue):继续运行直到下一个断点或结束
  • p 变量名:打印变量值(支持表达式,如 p len(my_list)
  • l(list):列出当前附近源码,l 10,20 显示第10–20行
  • q(quit):退出调试,终止程序

命令行启动pdb调试

不想改源码?可以用命令行方式启动:

  • python -m pdb script.py:从头开始单步执行整个脚本
  • python -m pdb -c continue script.py:跳过初始化,只在遇到 set_trace() 或异常时暂停
  • 配合 -c 参数还能预设命令,比如 -c "b 15" -c c 表示先在第15行打断点再继续

结合异常自动进入pdb

程序崩溃时想立刻看现场?可以设置环境变量或使用装饰器:

  • 运行前设置:export PYTHONBREAKPOINT=pdb.post_mortem(Linux/macOS)或 set PYTHONBREAKPOINT=pdb.post_mortem(Windows),然后用 python -m pdb script.py 启动
  • 更简单的是加一句:import sys; sys.excepthook = lambda *args: pdb.post_mortem(args[2]),让任何未捕获异常都自动进入事后调试