当前位置: 首页 > news >正文

Python调试神器:Pdb命令速查手册

Pdb 调试命令速查表

基础命令

查看代码

l # 显示当前位置附近的代码(11行)
ll # 显示当前函数的完整代码
w # 显示调用栈(where)
list 10, 20 # 显示第10-20行代码

执行控制

n # 下一步(next),不进入函数
s # 单步执行(step),进入函数内部
c # 继续执行(continue),直到下一个断点
r # 继续执行直到当前函数返回(return)
unt # 继续执行直到行号大于当前行
q # 退出调试(quit)

查看变量

p 变量名 # 打印变量值(print)
pp 变量名 # 漂亮打印(pretty print),格式化输出
p locals() # 查看所有局部变量
p globals() # 查看所有全局变量
p dir(对象) # 查看对象的所有属性和方法

常用变量查看示例

p state # 查看 state 对象
p state[“context”] # 查看 context 字典
p state[“context”].keys() # 查看 context 的所有键
pp state[“context”] # 格式化打印 context
p state[“context”][“categories”] # 查看 categories 列表
p len(state[“context”][“categories”]) # 查看列表长度

调用栈导航

w # 显示当前调用栈
up # 移动到上一层调用栈
down # 移动到下一层调用栈
bt # 显示完整的回溯信息(backtrace)

断点管理

b # 显示所有断点
b 行号 # 在指定行设置断点
b 文件名:行号 # 在指定文件的指定行设置断点
b 函数名 # 在函数入口设置断点
cl # 清除所有断点
cl 断点编号 # 清除指定断点
disable 断点编号 # 禁用断点
enable 断点编号 # 启用断点

条件断点

b 行号, 条件表达式 # 设置条件断点

示例:b 100, x > 10

表达式执行

!表达式 # 强制执行 Python 表达式(避免与 Pdb 命令冲突)

示例:!c = 100 (如果变量名是 c,会和 continue 命令冲突)

帮助

h # 显示帮助
h 命令名 # 显示特定命令的帮助

示例:h p

实用技巧

1. 查看复杂数据结构

pp state[“context”] # 格式化打印整个 context
p list(state[“context”].keys()) # 查看所有键
p state[“context”].get(“key”, “默认值”) # 安全获取值

2. 调试循环

在循环中设置条件断点

b 50, i == 10 # 只在 i 等于 10 时停下

3. 查看函数调用链

w # 查看完整调用栈
up # 向上查看调用者的上下文
p 变量名 # 查看上层函数的变量
down # 返回当前层

4. 临时修改变量

!变量名 = 新值 # 修改变量值进行测试

示例:!state[“context”][“current_date”] = “2025-12-20”

5. 执行多行代码

Pdb 不直接支持多行,但可以用分号

!x = 1; y = 2; print(x + y)

6. 查看异步代码

在 async 函数中,所有命令正常使用

p await some_async_func() # 不支持,需要先执行到结果

常见问题

问题1:命令和变量名冲突

如果变量名是 c、n、s 等,会和命令冲突

p c # ✅ 正确:打印变量 c
c # ❌ 错误:会执行 continue 命令
!c = 100 # ✅ 正确:修改变量 c

问题2:输入中文或有空格

确保使用英文输入法,命令之间不要有多余空格

p state # ✅ 正确
p s t a t e # ❌ 错误:字母之间有空格

问题3:查看大对象卡住

使用 pp 可能会输出大量内容

p len(big_list) # 先查看长度
p big_list[:5] # 只查看前几个元素

问题4:退出 Pdb 后程序继续运行

q # 退出调试,程序会终止
c # 继续执行到结束或下一个断点

快捷键(部分终端支持)

Ctrl+C # 中断当前执行,返回 Pdb 提示符
Ctrl+D # 退出 Pdb(等同于 q)
上/下箭头 # 浏览命令历史
Tab # 自动补全(部分终端支持)

实战示例

示例1:调试 LangGraph 工作流

(Pdb) p state[“context”].keys() # 查看 context 有哪些数据
(Pdb) pp state[“context”][“categories”] # 查看品类列表
(Pdb) n # 执行下一步
(Pdb) p current_date # 查看刚赋值的变量
(Pdb) c # 继续执行

示例2:调试 SQL 查询

(Pdb) p sql # 查看 SQL 语句
(Pdb) p params # 查看参数
(Pdb) n # 执行查询
(Pdb) p result # 查看查询结果
(Pdb) p len(result) # 查看结果行数

示例3:调试异常

(Pdb) w # 查看异常发生在哪个调用栈
(Pdb) up # 向上查看调用者
(Pdb) p 变量名 # 查看导致异常的变量
(Pdb) down # 返回异常位置

示例4:条件调试

(Pdb) b 100, category == “书法” # 只在处理"书法"品类时停下
(Pdb) c # 继续执行
(Pdb) p state[“context”][“current_category”] # 确认是"书法"

进阶用法

使用 pdb.set_trace() 设置断点

importpdb pdb.set_trace()# 程序会在这里停下
http://www.jsqmd.com/news/658747/

相关文章:

  • python pre-commit-hooks
  • 数字政府智慧政务场景落地AI大模型基于DeepSeek实操应用设计方案:核心应用场景落地设计、实施保障与运维体系
  • 跨平台Gitea数据迁移实战指南
  • 从零到一:在Ubuntu上搭建完整的GNU Radio Python开发环境
  • 2026年评价高的唐山断桥铝阳光房/唐山铝包木阳光房稳定供货厂家推荐 - 品牌宣传支持者
  • python commitizen
  • 别再为K8s存储发愁了!手把手教你用Ceph RBD搞定持久化卷(附Pod调度避坑指南)
  • 5分钟掌握PlantUML Editor:专业级代码驱动UML绘图工具实战指南
  • ARINC 429协议解析:航空电子数据总线的核心原理与应用
  • C语言学习路线:从入门到精通,打好编程内功【大一必看】
  • MedGemma Medical Vision Lab效果展示:病理切片WSI低倍镜下肿瘤区域与淋巴细胞浸润密度文本评估
  • python python-semantic-release
  • 免费在线UML绘图神器:3分钟学会用代码生成专业图表
  • 【优化求解】基于matlab不同发动机和燃料对GA应用进行价格调整建模【含Matlab源码 15342期】
  • 铁路基础设施缺陷盲道防撞柱井盖缺陷道路设施检测数据集VOC+YOLO格式2039张13类别
  • GSV9001E@ACP# 参数规格 + 产品特色总结分享
  • 别再只会用nmap了!Vim映射模式全解析:nmap、vmap、imap到底啥区别?
  • Mac上pip install总报‘site-packages is not writeable’?别慌,这其实是苹果在保护你的系统
  • 科研绘图进阶:PPT与MATLAB矢量图无损导入Word的终极指南
  • C语言怎么样?难学吗?
  • 【全网首家】Claude Opus 4.7 vs Opus 4.6 实测对比:7 项测试跑完后,我发现升级最值的是 coding 和 debug
  • Chandra在金融风控中的实际应用效果展示
  • 从斐波那契到爬楼梯:用Python动态规划解决经典问题,附LeetCode 70题保姆级解析
  • YOLOv8-nano+onnxruntime-web避坑实录:我的第一个浏览器端AI项目
  • VScode高效清理代码:正则表达式一键删除指定行与空白行
  • waitpid
  • 前辈学习C语言的四种方法,实际上不管学什么语言,都行之有效
  • Python自动化操作Creo的5个实用技巧(附代码示例)
  • StructBERT中文情感分类:SpringBoot微服务集成指南
  • 大数据开发场景中,Python 常用且易错易混淆的知识点总结(附:从实战角度梳理的 Python 知识体系)