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免费学习笔记(深入)”;
- 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]),让任何未捕获异常都自动进入事后调试










