用途:为排查缺陷提供系统化流程,避免随机试错式修复。核心原则是:未先完成根因调查,不得直接修复。
适用时机:测试失败、缺陷、异常行为、性能问题、构建失败、集成问题,以及宣称工作完成之前。压力大、看似有“快速修复”、已试过多次修复、尚不完全理解问题或即将宣布成功时尤其适用。
四项技术:
- 系统化调试:四阶段框架。阶段一根因调查(读取错误、复现、检查变更、收集证据);阶段二模式分析(找可用示例、对比、识别差异);阶段三假设与测试(提出理论、最小验证);阶段四实施(先写测试、一次修复、验证)。规则是完成前一阶段再进入下一阶段。
- 根因追踪:错误出现在调用栈深处时,沿调用栈逐层向后追溯,找到无效数据的最初来源,在源头修复而非修复症状。含 scripts/find-polluter.sh 用于二分定位测试污染。
- 纵深防御:在数据经过的每一层做校验,使缺陷难以发生。分入口校验、业务逻辑、环境守卫、调试插桩四层。
- 验证:声称成功前先运行验证命令并确认输出。铁律是:没有新的验证证据,不得宣称完成。
快速参考:遇到缺陷用 systematic-debugging.md;错误在栈深处用 root-cause-tracing.md;找到根因后用 defense-in-depth.md 补校验;即将宣称成功前用 verification.md。
危险信号:出现“先快速修一下,之后再查”“试试改 X 看行不行”“大概是 X,先修它”“现在应该好了”“似乎修好了”“测试通过,完成了”等想法时,应回到系统化流程。限制:资料未提供具体平台、依赖环境、安装命令或收费信息。