对该分享的记录:Debugging Software, June 2023
WHAT: 什么是Debug?
Why is it broken, and how do we fix it?
Debug是关于「为啥出问题,以及我们如何修复」的过程。
WHY: 为何Debug能力如此重要?
编程不只是写代码,还包括:
- Planning/design
- Communication
- Review
- Figuring out why something isn’t working
开发者花费大量时间Debug和修复代码。
Debug如此重要,但很多开发者却对此不熟悉,为啥?
- 学校不教
- 大量知识来自经验
- 边走边学的艰难的路
HOW: 如何Debug?
Debug的一些核心原则:
- 每个问题都有根源(但可能并不容易,比如会遇到环境复杂、难以复现等问题)
- 理解系统的预期行为很重要(系统没按照预期执行就是bug)
- 能复现是关键(用于确认问题、以及修复后的验证)
- 有计划的debug(不要漫无目的,一次只改一处,逐渐缩小范围)
- 错误信息非常有用(包含where、what、和when等信息)
常用的Debug步骤:
- 理解问题描述
- 复现问题 使用最小化的产生问题的示例场景收窄复现的问题(降低复杂度!)
- 如果可能的话,找到根本问题(假设、测试、实验)
- 确定解决问题的最佳方案
- 尽量修复根本问题,而不是现象
- 确定约束条件(严重性、代码要求)
- 修复问题(添加测试或错误处理,确保不会再发生)
- 完善文档,尽可能多地记录下来
TIPS
- 🔧善用工具
- 📦深入底层实现(必要时翻源码,如三方库)
- 😨别怕(逐步分解问题)
- 🧘注意劳逸结合(坚持、专注、适当休息!)