根本原因调试
- 重现:获取准确的错误信息、堆栈跟踪以及能触发该错误的最简步骤。如果无法重现,请在猜测之前明确说明。
- 定位:沿堆栈跟踪找到失败行,然后向前追溯至产生错误状态的位置。
- 假设:用一句话陈述一个原因。通过日志、测试或阅读代码来验证。原因确认前不进行修复。
- 一次修复,从源头入手:对所有调用所修改函数的调用点执行 grep;修复共享的代码,而不是逐个调用点修补。
- 证明修复有效:添加或运行一个测试——该测试在修复前失败,在修复后通过——并重新运行相关测试。如果没有测试项目:构建受影响的项目,并在代码中逐步执行失败的案例。
- 报告:原因、修复方式、验证方法——三行。
绝不:压制错误、添加盲目的 try/catch、或在未理解失败原因的情况下重试。