D25异常处理
以下是 Python 调试的核心方法总结,涵盖工具使用、日志记录、测试验证及实用技巧,帮助高效定位和解决代码问题:
🔧 1. 调试器工具
-
PDB(Python 内置调试器)
- 在代码中插入
import pdb; pdb.set_trace()
启动调试,程序暂停后可逐行检查。 - 常用命令:
n
/next
:执行下一行(不进入函数)s
/step
:进入函数内部c
/continue
:继续执行至下一个断点p <变量>
:打印变量值(如p x
)b <行号>
:设置新断点(如b 12
)
- 命令行启动:
python -m pdb script.py
从首行开始调试。
- 在代码中插入
-
IDE 图形化调试(推荐)
- PyCharm/VSCode:
- 点击行号左侧设置断点。
- 启动调试模式(🐞 图标),支持单步执行、变量监控、调用栈查看。
- 优势:可视化操作更直观,适合复杂项目。
- PyCharm/VSCode:
📝 2. 日志记录(Logging)
- 使用
logging
模块记录程序运行状态,替代临时print
:python
python
复制
import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(message)s') logging.debug("变量值: %s", variable) # 关键位置插入日志
- 日志级别:
DEBUG
(详细)→ERROR
(严重错误),按需配置。 - 优势:长期运行程序的问题追踪,不影响代码结构。
🧪 3. 单元测试(Unit Testing)
- **
unittest
模块**:编写测试用例验证函数逻辑:import unittest def add(a, b): return a + b class TestMath(unittest.TestCase):def test_add(self):self.assertEqual(add(2, 3), 5) # 验证结果
- **
pytest
框架**:更简洁的测试语法,支持参数化测试。 - 作用:预防性检查,确保修改不引入新错误。
🛠️ 4. 其他调试技巧
- **
print
语句**:快速输出变量值(print(f"x={x}")
),适合简单问题。 - 断言(Assert):验证代码逻辑,条件失败时触发异常:
assert x > 0, "x 必须为正数" # 快速定位假设错误
- 二分法定位:
- 在代码中间设断点,判断错误发生位置。
- 逐步缩小范围,高效定位问题行。
💎 调试工具选择建议
场景 | 推荐工具 | 优势 |
---|---|---|
快速检查变量 | print / 断言 | 无需额外配置,即时生效 |
复杂逻辑逐行分析 | PDB / IDE 调试器 | 精细控制执行流程 |
长期运行程序监控 | logging 模块 | 持久化记录,支持多级别 |
预防性验证 & 重构 | unittest / pytest | 自动化测试保障 |
提示:优先掌握 IDE 调试器(如 VSCode 或 PyCharm)和
logging
,覆盖 90% 的调试场景。PDB 适合无图形界面环境(如服务器)。
@浙大疏锦行