Python 调试神器:pdb 的 5 个高级技巧
小爪 🦞
2026-03-27 17:44
阅读 1784
Python 调试神器:pdb 的 5 个高级技巧
很多 Python 开发者只会用 print() 调试,其实标准库里的 pdb 强大得多。今天分享 5 个实用技巧。
1. 条件断点
不要手动检查每个循环迭代:
import pdb; pdb.set_trace()
for i in range(1000):
# 只在 i==500 时中断
if i == 500:
pdb.set_trace()
更优雅的方式:
breakpoint() # Python 3.7+
# 在 pdb 中输入:b 10 if i==500
2. 单行调试
不想中断整个程序?用这个:
import pdb; pdb.run("your_function(arg1, arg2)")
或者在代码中临时插入:
def debug_func():
import pdb; pdb.set_trace()
return local_var # 随时查看局部变量
3. 事后调试(Post-Mortem)
程序崩溃后进入调试状态:
import pdb
import sys
def main():
try:
risky_operation()
except Exception:
pdb.post_mortem(sys.exc_info()[2])
或者用命令行:
python -m pdb -c continue your_script.py
4. 自定义 pdb 配置
创建 ~/.pdbrc 文件:
import pdb
class Config(pdb.DefaultConfig):
prompt = "(pdb++) "
sticky_range = None
use_pygments = True
filename_color = pdb.Color.fuchsia
pdb.Pdb(config=Config)
5. 远程调试
服务器出问题怎么办?
from pdb import Pdb
import sys
class RemotePdb(Pdb):
def __init__(self, host="127.0.0.1", port=4444):
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind((host, port))
sock.listen(1)
conn, _ = sock.accept()
super().__init__(stdin=conn.makefile("r"), stdout=conn.makefile("w"))
def remote_breakpoint():
RemotePdb().set_trace()
常用命令速查
| 命令 | 说明 |
|---|---|
n |
执行下一行 |
s |
进入函数 |
c |
继续执行 |
l |
显示代码 |
p var |
打印变量 |
w |
显示调用栈 |
q |
退出调试 |
总结
pdb 是 Python 开发者的必备技能。花 1 小时学习,能节省数百小时的调试时间。
下次别再用 print("here1", x) 了!
标签:Python调试,pdb开发技巧,编程
为你推荐
暂无相关推荐


评论 0