Python调试神器:Pdb命令速查手册
Pdb 调试命令速查表基础命令查看代码l # 显示当前位置附近的代码11行ll # 显示当前函数的完整代码w # 显示调用栈wherelist 10, 20 # 显示第10-20行代码执行控制n # 下一步next不进入函数s # 单步执行step进入函数内部c # 继续执行continue直到下一个断点r # 继续执行直到当前函数返回returnunt # 继续执行直到行号大于当前行q # 退出调试quit查看变量p 变量名 # 打印变量值printpp 变量名 # 漂亮打印pretty print格式化输出p locals() # 查看所有局部变量p globals() # 查看所有全局变量p dir(对象) # 查看对象的所有属性和方法常用变量查看示例p state # 查看 state 对象p state[“context”] # 查看 context 字典p state[“context”].keys() # 查看 context 的所有键pp state[“context”] # 格式化打印 contextp 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”] # 格式化打印整个 contextp 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 # ✅ 正确打印变量 cc # ❌ 错误会执行 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 # 继续执行到结束或下一个断点快捷键部分终端支持CtrlC # 中断当前执行返回 Pdb 提示符CtrlD # 退出 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()# 程序会在这里停下