# Debug（调试）

当出问题了：测试失败、回归、崩溃、未定义行为。

## 症状

从失败的测试或报告的症状开始。说清楚：什么不行，期望是什么。

## 假设

列举可能导致症状的东西。从最可能的开始。

## 隔离

运行最小可重复的情况。去掉无关的代码。每次改一个变量。

## 观察

运行、记录输出、检查状态。如果症状消失就记录。如果保持就记录。

## 修复

修改代码。回到"隔离"重复直到症状消失。

## 验证

原始失败的测试现在通过。无新的失败。
