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

python进阶: 深入了解调试利器 Pdb

Python是一种广泛使用的编程语言,以其简洁和可读性著称。在开发和调试过程中,遇到错误和问题是不可避免的。Python为此提供了一个强大的调试工具——Pdb(Python Debugger)

PdbPython标准库中自带的调试器,可以帮助开发者跟踪代码执行、查看变量值、设置断点等功能。


1. 启动 pdb 调试

方法一:命令行启动
python -m pdb your_script.py

程序会从第一行开始暂停,进入 pdb 调试模式。

方法二:代码中插入断点

在需要调试的位置插入以下代码:

import pdb; pdb.set_trace()  # Python 3.7+ 可简写为 breakpoint()

运行脚本时,程序会在 pdb.set_trace() 处暂停。


2. 常用命令

命令简写说明
nextn执行下一行(不进入函数内部)
steps进入函数内部
continuec继续执行,直到下一个断点或程序结束
listl显示当前代码位置周围的代码
printp打印变量值,例如 p variable
breakb设置断点,例如 b 10(第10行)或 b function_name
wherew显示当前调用栈(即程序执行到此处的位置路径)
returnr执行到当前函数返回
quitq强制退出调试
helph查看命令帮助

3. 高级用法

条件断点
b 20, condition  # 在第20行设置条件断点,当条件满足时暂停
# 示例:b 10, x > 5  # 当变量 x 大于5时在第10行暂停
修改变量
p x = 10  # 在调试时修改变量 x 的值为10
查看命令历史

Enter 键可重复执行上一个命令。


4. 示例调试流程

假设有以下脚本 demo.py

def add(a, b):result = a + breturn resultx = 5
y = 10
import pdb; pdb.set_trace()  # 在此处暂停
total = add(x, y)
print(total)

调试步骤:

  1. 运行脚本,程序在 pdb.set_trace() 处暂停。
  2. 输入 n 执行下一行(此时 total = add(x, y) 还未执行)。
  3. 输入 s 进入 add 函数内部。
  4. 输入 p result 查看 result 的值。
  5. 输入 c 继续执行,直到程序结束。

5. pdb.pm的使用

pdb.pm()Python 调试器 pdb 中一个非常有用的功能,它用于在程序抛出异常(未被捕获的异常)后,自动进入调试模式,并定位到异常发生的堆栈帧(即错误发生的具体位置)。

def divide(a, b):return a / b
try:result = divide(5, 0)
except Exception as e:import pdb; pdb.pm()  # 捕获异常后手动进入调试

6. 小技巧

  • 交互式执行:在调试过程中可以直接输入变量名或表达式,例如直接输入 x 查看其值。
  • 断点管理:使用 break 查看所有断点,clear 删除断点。
  • 跳过代码块:用 until 跳出循环(例如 until 15 执行到第15行)。

通过 pdb 可以逐步跟踪代码逻辑,检查变量状态,快速定位问题。熟练后可以结合 IDE 的图形化调试工具(如 VS Code、PyCharm)提升效率。

相关文章:

  • Logisim数字逻辑实训——计数器设计与应用
  • Node.js 异步调用淘宝API实战:构建高吞吐商品详情数据采集方案
  • Spring 生命周期回调全解:从 @PostConstruct 到 SmartLifecycle 的深度探索
  • 如何批量在多个 Word 文档末尾添加广告页面
  • 【java 13天进阶Day05】数据结构,List,Set ,TreeSet集合,Collections工具类
  • centos下openjdk报:getVersion(FontConfiguration.java)异常,安装fontconfig无效问题的处理
  • day2-小白学习JAVA---java第一个程序
  • 问题:el-tree点击某节点的复选框由半选状态更改为全选状态以后,点击该节点展开,懒加载出来子节点数据以后,该节点又变为半选状态
  • Android 12系统静态壁纸深度定制指南
  • tailwincss
  • ​​从Shell到域控:内网渗透中定位域控制器的8种核心方法​
  • ceph weight 和 reweight 的区别
  • Python语言基础教程(上)4.0
  • 2、SpringAI接入ChatGPT与微服务整合
  • SAP案例:珠海汉胜科技SAP S/4 HANA智能制造实践与价值实现
  • 2364. 统计坏数对的数目 之 灵活思想、学会变形
  • PDK中technology file从tf格式转换为lef格式
  • 【python报错解决训练】
  • RESTful API工具和框架详解
  • 深入理解 Android Handler
  • 美法官裁定谷歌非法垄断在线广告
  • 6名驴友庐山西海探险走失被追缴2万救援费,组织者被追缴4千
  • 非盟特别会议聚焦美国关税政策,共商应对之法
  • 履新荆州市委书记次日,汪元程走访看望老同志
  • 消博会参展外企坚定看好中国市场:对中国经济基本面和强大韧性充满信心
  • 法国决定驱逐12名阿尔及利亚使馆工作人员并召回驻阿大使