进阶 📋 6 个步骤 第 400 / 470 篇

用 AI 辅助代码调试与排错:把 Bug 变成一次高效对话

复现→定位→根因→修复→回归测试,把 AI 当成你的排错搭档。讲清报错怎么贴、最小复现怎么做、修复与测试怎么审,以及私有代码的安全边界。

2026.09.09· 14 分钟阅读· 约 1140 字· 🐞 调试 / 🧠 Claude

碰到 Bug 第一反应是想砸键盘?换种思路:把调试当成和 AI 的一次「会诊」。你提供线索(报错、复现步骤、相关代码),AI 帮你定位、解释根因、给修复方案,最后你拍板。本教程给你一套可复用的排错流程。

🐞 本教程适合:所有写代码的人。无论你用 Cursor、Claude 还是网页版 ChatGPT,这套「喂料姿势」都通用。

先搞懂:AI 擅长什么、不擅长什么

AI 强在读代码、解释报错、列可能原因、给改法;但它看不到你的运行时环境、不知道你没贴出的代码、也不会为你的线上事故负责。所以:好结果 = 你给足上下文 + 它来分析 + 你做判断与验证。

AI 能做的你必须自己做的
解释 traceback 每一行在说什么判断是否信、是否适你的场景
列出 3-5 个可能根因用最小复现逐一排除
给出修复 diff读懂改动、跑测试验证

Step 1:先能稳定复现

1 复现不了,就别怪 AI 看不懂

调试第一步永远是「稳定复现」。把问题缩到最小:

1. 记录:输入是什么、期望结果、实际结果
2. 缩小:删掉无关代码,留下能触发 Bug 的最小片段
3. 固定环境:Python/依赖版本、操作系统、是否并发

最小复现是金:你能用 10 行代码复现的问题,AI 十有八九能秒解;贴 2000 行还带「偶尔才出」的,谁都头大。

Step 2:把报错「喂」给 AI 的正确姿势

2 一次给全,别只贴一行

新手常犯的错:只甩一句「TypeError 咋办」。有效喂料要包含三件套:

【完整报错】把 traceback 从头贴到尾(含行号)
【相关代码】出错函数附近 20-30 行
【我做过的尝试】已排除哪些可能

例:
报错:IndexError: list index out of range (line 42)
代码:items = load(); print(items[user_id])
背景:user_id 来自表单,可能越界
💡 在 Cursor/Claude Code 里直接问当前文件「为什么这里报错」,它们能读到上下文,比复制粘贴更省事。

Step 3:让 AI 解释根因

3 先懂「为什么」,再谈「怎么改」

别急着要补丁,先让 AI 用大白话讲清楚:

提示词:
「请用通俗的话解释这个报错为什么发生,
 并指出代码里具体哪一行、什么前提假设被打破了。
 不要直接给代码,先讲清楚根因。」

理解根因比拿到补丁更重要:根因清楚了,你可能自己就有更好解法,也不会被 AI 的「看似修好」骗过。

Step 4:让 AI 给修复,但你要先读懂

4 AI 写的改动,先审再合

让它给最小改动,并说明每处为什么:

提示词:
「给出最小改动来修复,并逐行说明:
 1) 改了哪里 2) 为什么这样改 3) 会不会引入新问题」
🔍 铁律:没读懂的 diff 不合并。AI 可能顺手改了别的逻辑或引入新依赖,你才是责任人。

Step 5:让 AI 补一个回归测试

5 修好不算完,证明它不再犯

最容易被忽略的一步:写个测试把 Bug 锁死,下次改动撞到会立刻报警。

# 用 pytest,把「当时出错的情况」变成用例
def test_user_id_out_of_range():
    with pytest.raises(IndexError):
        get_item_by_id(bad_id)  # 越界应被显式处理而非崩溃
✅ 好习惯:修完跑全套测试(pytest / npm test)。CI 里也要保留「测试不绿不许合并」的红线。

Step 6:当 AI 也卡住时

AI 给的方案都不灵?换思路:

1. 加日志/打印:在关键分支打点,看实际走了哪条路
2. 二分法:注释掉一半逻辑,逐步定位
3. 换模型/换问法:让它「假设你是资深专家,列出非常规根因」
4. 搜 issue / 源码:开源库的问题常有人踩过

安全红线:不要把密钥、生产数据库、含客户信息的代码贴给公网大模型。私有代码请用本地模型或企业版/私有化部署,并先脱敏。

常见问题速查

现象大概率原因 & 解决
AI 给的方案不灵上下文不全;补最小复现再问
改完别处又炸了缺回归测试;补用例锁死行为
AI 一直绕圈让它换非常规思路 / 加日志二分
怕泄露代码换本地/企业版模型,先脱敏
← 返回教程中心