一份调试清单
按顺序逐项完成这些步骤。直接跳到"修好它"正是让 AI 兜圈子的原因。
- 可靠地复现它。 找到每次都能让 bug 出现的确切步骤。一个你无法复现的 bug,是你无法确认自己已经修好的 bug——你将永远只是在猜测它是否消失了。如果它是间歇性出现的,去捕猎那个让它切换的变量:某个特定输入、登录还是登出的状态、缓慢的网络。
- 阅读真正的错误信息。 不要略读。错误信息和堆栈跟踪的顶部通常会指出出问题的文件和行号。初学者常常因为某句话看起来吓人,就略过了屏幕上最有用的那句。
- 收集上下文。 收集错误文本、堆栈跟踪、相关代码,以及一句话描述你期望的结果。
- 把完整的画面交给 AI。 把以上所有内容粘贴在一条消息里。让它形成一个假设。
- 形成假设,而不是修复方案。 在"修好这个"之前先问"什么可能导致这个?"。基于错误理论的错误修复只会浪费时间——有时还会在第一个 bug 之上叠加一个第二个 bug。
- 添加日志来测试假设。 在修改代码之前,先确认代码实际在做什么。
- 二分查找问题。 通过反复将可疑区域对半切分,缩小故障发生的位置。
- 修复根本原因,而非表象。 确保修复针对的是它为什么出问题,而不仅仅是可见的故障。
- 验证修复并检查回归。 重新运行复现步骤。然后确保附近的功能仍然正常工作。
这个顺序并非随意。每一步都产生下一步所需要的证据。复现给你提供可读的东西;阅读给你提供可收集的上下文;上下文给 AI 提供可做假设的素材。跳过一步,你就是在给下一步喂一个窟窿。