实战

Claude Code 调试工作流:从报错到修复,AI 辅助 debug 的正确姿势

Claude Code 调试工作流完整指南:黄金三要素提示结构、先写失败测试再修复、4 种 bug 类型的不同策略、子 Agent 代码库调查,以及调试时的上下文管理技巧。

2026/4/115分钟 阅读ClaudeEagle

「帮我修一下这个 bug」——这是和 Claude Code 最常见的对话,也是最容易出问题的对话。

不是因为 Claude Code 调试能力差,而是因为调试任务对「上下文精准度」的要求特别高。给的信息对,Claude 能在几分钟内定位并修复复杂 bug;信息不够,Claude 会在错误的方向乱试一通。


调试的黄金规则:症状 + 位置 + 期望状态

每次描述 bug,包含这三要素:

text
# 完整的调试提示格式
[症状]:[具体错误信息或异常行为]
[触发条件]:[什么情况下发生]
[位置]:[相关文件或模块]
[期望状态]:[正常情况下应该怎样]

# 示例
症状:用户登录后刷新页面返回 401,需要重新登录
触发条件:session token 过期后刷新触发
位置:src/auth/session.ts,特别是 refreshToken 函数
期望:token 自动刷新,用户无感知继续使用

让 Claude 先写失败测试,再修复

这是调试最有效的模式,没有之一:

text
"users report login fails after session timeout.
check auth flow in src/auth/, especially token refresh.
Write a failing test that reproduces the issue, then fix it."

为什么先写测试

  1. 测试是对「什么是 bug」最精确的定义
  2. 修复后立刻有验证手段
  3. 防止以后相同 bug 复现
  4. Claude 有了可以自我验证的标准,不依赖你反复 review

错误信息的正确用法

把完整错误堆栈贴进去

text
# 差的
"build is failing, help me fix it"

# 好的
"build fails with this error:
[贴完整的错误堆栈]
Fix root cause. Verify build succeeds. Don't suppress the error."

「不要压制错误」这一句话很重要——Claude 偶尔会为了让报错消失而用 try-catch 包住问题,而不是真正修复。明确告诉它要解决根因。

使用管道直接发送日志

bash
# 把错误日志直接发给 Claude
cat error.log | claude

# 或者运行命令后把输出发给 Claude
npm run build 2>&1 | claude "fix these build errors"

在 VS Code 插件里,点「Include terminal output」直接把最新的终端输出加入上下文。


不同类型 bug 的调试策略

类型 1:明确位置的 bug

text
"@src/auth/session.ts#45-80 这段 token 刷新逻辑有竞态条件:
多个请求同时触发刷新时,只有一个能成功。
分析并修复并发问题。"

精确的文件和行号让 Claude 直接看到问题代码,而不是先花时间搜索。

类型 2:行为异常但位置不明确

text
"用户报告:提交空表单时不显示错误提示。
在表单提交流程里找出为什么验证不生效:
- 先检查 @src/components/LoginForm.tsx 的提交处理
- 再检查 @src/utils/validation.ts 的验证逻辑
- 如果需要,进一步追踪调用链"

给出调查方向,避免 Claude 漫无目的地探索整个代码库。

类型 3:性能问题

text
"API /api/users/list 在数据量超过 1000 条时响应超过 5 秒。
分析 @src/api/users.ts 的查询逻辑,找出性能瓶颈。
目标:响应时间降到 500ms 以内。"

性能 bug 必须给出可测量的目标,否则 Claude 不知道什么程度算「修好了」。

类型 4:间歇性 bug

text
"以下错误在生产环境偶发,本地难以复现:
[错误信息]

根据调用栈分析根因:
1. 看 src/queue/ 是否有竞态条件
2. 检查是否有资源没有正确释放
3. 分析是否是异步处理的时序问题

不要只修症状,要找到根因并添加相应的防御性代码。"

用子 Agent 做代码库范围的调查

当 bug 可能来自多个模块,不确定具体位置时:

text
"use a subagent to investigate all places where user session state
is read or written, and identify any inconsistencies."

子 Agent 在独立上下文里搜索,不会污染主会话的上下文。结束后汇报发现,你再决定怎么修。


调试时的上下文管理

及时 /compact:调试过程中可能尝试多种方案,失败方案的记录会污染上下文。每次尝试新方向前,用 /compact 保留关键信息,清除失败路径。

两次失败就重来:同一问题被纠正超过两次,说明上下文已经被错误方向污染。/clear 后用学到的信息写更精确的提示重试。

用 /rewind 回退:Claude 改了代码后发现方向错了:

bash
Esc+Esc  # 打开 rewind 菜单
# 选「只恢复代码」,保留对话历史

验证修复的标准套路

text
修复完成后:
1. 运行失败测试,确认它现在通过
2. 运行整个测试套件,确认没有引入新问题
3. 如果是 UI bug,截图验证视觉效果
4. 提交前运行 typecheck 和 lint

把这个写进 CLAUDE.md,每次调试 Claude 都会自动执行验证。


快速调试场景提示词模板

text
# 编译/构建错误
"[贴完整错误]. Fix root cause, verify [build command] succeeds. Don't suppress."

# 运行时异常
"[症状] at [位置]. Write test reproducing the bug, then fix."

# 性能问题
"[操作] takes [时间], should be under [目标]. Profile @[文件], fix bottleneck."

# 视觉 bug
"[粘贴截图] [描述差异]. Fix and screenshot to verify."

来源:Claude Code 官方 Best Practices | f22labs Claude Code Productivity Tips | 整理:ClaudeEagle

相关文章推荐

实战用 Claude Code 构建生产级应用:真实项目中学到的 10 个经验教训Claude Code 生产级应用实战经验:10 个真实项目中学到的教训,包括测试先行的重要性、CLAUDE.md 的长期价值、长会话管理、AI 代码 review 标准,以及让 Claude Code 越用越好的积累方式。2026/4/11实战Claude Code 调试实战:用 AI 快速定位并修复复杂 Bug 的完整方法论Claude Code 辅助调试的完整方法论:如何描述 Bug(现象/预期/环境三要素)、上下文投喂技巧(粘贴报错栈/相关代码/日志)、让 Claude 做「橡皮鸭调试」的提示词模板、系统性排查未知 Bug 的标准流程、结合截图分析浏览器/终端错误、调试复杂异步/并发问题的专项提示词、以及让 Claude 主动加日志帮助定位问题的技巧。2026/3/20实战Claude Code 并行开发实战:多会话、Git Worktrees、Fan-out 同时处理多个任务Claude Code 并行开发实战:6 种方案(多会话标签、Git Worktrees、非交互批量、Writer/Reviewer、Agent Teams、Fan-out)同时处理多个任务,含成本优化模型选择建议。2026/4/10实战Claude Code 上下文管理实战:/compact、/clear、子 Agent,解决长会话性能下降Claude Code 上下文管理完整攻略:6 条实战规则解决长会话性能下降,含 /compact /clear 时机选择、子 Agent 节省 40% Token、跨会话继续任务、检查点回退操作。2026/4/10实战CLAUDE.md 最佳实践:如何写出让 Claude Code 事半功倍的项目配置文件CLAUDE.md 是 Claude Code 最重要的项目配置文件。5 条黄金法则 + 高级技巧 + 模板,让你写出真正高效的项目配置。2026/4/7实战Claude Code 10 个高效使用技巧:从入门到专家级提效(2026)Claude Code 10 个高效使用技巧:给 Claude 验证方法(最高杠杆)、Plan Mode 先规划再执行、CLAUDE.md 持久规则、@ 精确引用文件、完整错误信息、上下文管理、Unix 管道集成、子代理并行、Git Worktree 多任务、反向采访需求。2026/3/12