Skills: 调试技能

最后更新:2026-08-31

调试是开发中最耗时的环节——Skill 把调试经验固化,让每次排错都有章可循。


1. 调试 Skill 类型

(1) 错误诊断

从错误信息定位根因:

YAML
---
name: error-diagnoser
description: "从错误信息诊断根因"
triggers:
  - keyword: "报错|error|异常|bug"
tools:
  - Read
  - Grep
  - Glob
  - Bash
---

(2) 性能分析

定位性能瓶颈:

分析维度 工具/方法 输出
CPU 热点 profiler 输出 函数耗时排名
内存泄漏 内存快照对比 泄漏对象定位
慢查询 SQL 日志分析 慢查询清单
启动时间 时间戳打点 耗时阶段分布

(3) 日志分析

从日志中提取关键线索:

MARKDOWN
## 日志分析流程
1. Read 日志文件
2. Grep 搜索 ERROR/WARN 关键字
3. 提取异常堆栈和时间线
4. 关联同一请求的日志条目
5. 输出分析报告

2. 系统化调试流程

(1) 四阶段调试法

TEXT 📖 仅展示
调试四阶段
├── 1. 复现
│   ├── 确认错误可复现
│   ├── 记录复现步骤
│   └── 缩小复现条件
├── 2. 定位
│   ├── 读取错误堆栈
│   ├── 搜索相关代码
│   └── 确认问题位置
├── 3. 修复
│   ├── 分析根因
│   ├── 编写修复代码
│   └── 添加防御性检查
└── 4. 验证
    ├── 复现场景通过
    ├── 运行全量测试
    └── 确认无回归

(2) 二分法定位

MARKDOWN
## 二分法调试
1. 确认问题存在的版本范围
2. Bash: git bisect start
3. 逐步缩小范围到具体提交
4. Read 该提交的 diff
5. 定位引入问题的具体代码行

(3) 假设驱动的调试

MARKDOWN
## 假设验证法
1. 列出可能的原因假设(最多 3 个)
2. 对每个假设设计验证方法
3. 按可能性从高到低验证
4. 验证通过 → 确认根因
5. 验证失败 → 排除假设,重新分析

3. 常见错误模式

(1) 错误模式速查

错误类型 典型特征 排查方向
空指针 NoneType/null/undefined 检查变量赋值链路
类型错误 TypeError/ClassCastException 检查类型转换和断言
并发问题 间歇性失败 检查共享状态和锁
边界条件 特定输入才出错 检查空值、零值、极端值
环境差异 本地正常线上出错 检查配置、依赖版本
时序问题 顺序相关 检查异步操作和事件顺序

(2) 错误信息解读

TEXT 📖 仅展示
错误堆栈阅读顺序:
1. 最后一行:错误类型和消息(最关键)
2. 倒数 2-3 行:你的代码中的调用点
3. 更上层的堆栈:框架/库的调用链
4. 第一个非框架行:问题的真正触发点

4. 调试 Skill 实战

▶ 示例:智能诊断 Skill

Alice 创建了一个自动诊断错误的 Skill:

YAML
---
name: smart-debug
description: "系统化调试:复现→定位→修复→验证"
tools:
  - Read
  - Grep
  - Glob
  - Bash
  - Edit
---
MARKDOWN
## 调试流程
1. 读取错误信息和堆栈
2. Grep 搜索错误消息在代码中的位置
3. Read 相关代码,分析可能原因
4. 列出 3 个假设并逐一验证
5. 确认根因后 Edit 修复
6. Bash 运行测试验证

Bob 说:"调试最怕的是'试一试'——改了不知道为什么有效,下次还犯。Skill 强制你走假设→验证的流程,每步都有理有据。"


❓ 常见问题

Q AI 调试比人工快吗?
A 对模式化错误(空指针、类型错误、常见异常)快很多。对复杂的业务逻辑问题,AI 能缩小范围但最终定位仍需人工。
Q 如何避免 AI 给出错误的调试方向?
A 要求 AI 列出假设并逐一验证,而不是直接跳到结论。验证每一步的推理链条。
Q 调试 Skill 需要编辑权限吗?
A 诊断阶段只需要只读权限。修复阶段才需要 Edit。建议分成两个 Skill:诊断(只读)+ 修复(读写)。

📖 小节


📝 作业

  1. 基础题(难度⭐):创建一个错误诊断 Skill,能从错误堆栈自动定位到代码位置。
  2. 进阶题(难度⭐⭐):创建一个系统化调试 Skill,实现四阶段调试法,包含假设验证环节。
  3. 挑战题(难度⭐⭐⭐):创建一个性能分析 Skill,能从 profiler 输出中定位瓶颈,给出优化建议和预估收益。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏