调整心态
做好预期,预计该BUG多长时间可以解决。保持良好的心态和钻研精神去解决问题。
定位BUG
定位流程
- 模糊定位
- 根据经验推测最可能出现问题的位置,想象什么场景才会出现这样的BUG
- 旧版本代码比较,新版本出现的BUG与旧版本进行比较。
- 精准定位
- 二分法,定位BUG在前面一半还是后面一半。持续二分法直到精准定位
- 排除法,去掉部分代码,测试BUG还能否复现。持续排除法直到精准定位
- 逻辑梳理
- 小黄鸭调试法,帮助捋清楚代码逻辑
传说中程序大师随身携带一只小黄鸭,在调试代码的时候会在桌上放上这只小黄鸭,然后详细地向鸭子解释每行代码 。
许多程序员都有过向别人(甚至可能向完全不会编程的人)提问及解释编程问题,就在解释的过程中击中了问题的解决方案。一边阐述代码的意图一边观察它实际上的意图并做调试,这两者之间的任何不协调会变得很明显,并且更容易发现自己的错误。
定位技巧
- 编译器DEBUG
- 代码运行链路加日志
- 超出能力范围及时求助,外部视角打开思路
修复BUG
修复流程
- 动手修复之前,确保捋清楚了整条链路的逻辑,避免出现连锁BUG
- 梳理链路逻辑,可以帮助发现深层次的隐藏BUG,发现不合理的设计
- 重构:看整体->改细节->review
的大娃
复盘
总结经验,这次出现了什么问题,下次如何做的更好