Python 调试完全指南:print vs logging vs pdb vs breakpoint
Bug是程序员最忠实的伙伴,调试技能直接决定解决问题的速度。从最快到最强大,讲解四种调试方式的正确用法。
print:最快但不推荐
print()是最快的临时调试方式,但容易忘记删、污染输出。可以用DEBUG环境变量控制:if os.getenv('DEBUG')=='1': print(...)。
logging:生产环境必备
logging模块支持DEBUG/INFO/WARNING/ERROR/CRITICAL五个级别。basicConfig()配置格式和输出目标。logger.debug()默认不输出,不影响性能。
pdb:命令行调试
pdb.set_trace()在代码中设置断点。Python 3.7+推荐breakpoint(),等价于import pdb; pdb.set_trace()。常用命令:n单步,s进入函数,c继续,p打印变量,w查看调用栈。
IDE 调试
VS Code配置.vscode/launch.json后按F5开始调试,支持断点、条件断点、监视变量、调用栈。PyCharm右键Debug支持远程调试和多进程调试。
运行效果
pytest tests/ -v详细查看测试结果。pdb中p variable打印变量值,w显示调用栈位置。
常见问题
Q1: print会影响性能吗?print有I/O开销,高频调用会拖慢程序,生产环境用logger.debug()。
Q2: breakpoint()设条件断点?在IDE断点面板设置条件(如x > 10),pdb用b MyClass.method, condition x > 10。
延伸阅读
- Python异常处理
- Python pytest
- Python单元测试
---
作者:小马 | 绍大技术网 shaoda.net