调试Skill debug

调试技能用于系统性地识别、分析和修复软件中的错误、测试失败和生产问题,通过日志分析、关联查询和堆栈跟踪等方法。适用于软件开发、测试和DevOps领域,帮助提升代码质量、稳定性和故障排除效率。关键词:调试、错误排查、日志分析、故障排除、软件测试、生产问题、堆栈跟踪、关联查询。

测试 0 次安装 0 次浏览 更新于 3/12/2026

name: debug description: 通过日志分析和关联调试错误、测试失败和意外行为。在遇到问题、错误消息、分析日志或调查生产错误时使用。

调试

系统性的调试错误、测试失败、意外行为和生产问题。

使用方法

/debug [issue] [--logs] [--correlate] [--trace] [--type bug|build|perf|deploy]

选项

标志 用途
--logs 启用日志模式分析(错误高峰、频率、类型)
--correlate 在结构化日志上运行SQL关联查询
--trace 带上下文的深度堆栈跟踪分析
--type 问题类别:bug(错误)、build(构建)、perf(性能)、deploy(部署)

何时使用

  • 出现错误消息或堆栈跟踪
  • 测试失败
  • 代码行为意外
  • 用户说“坏了”或“不工作”
  • 需要调查生产错误(使用--logs
  • 需要跨系统关联错误(使用--correlate
  • 需要深度堆栈分析(使用--trace

调试过程

  1. 捕获 - 获取错误消息、堆栈跟踪和重现步骤
  2. 隔离 - 缩小失败位置
  3. 假设 - 形成关于原因的假设
  4. 测试 - 用证据验证假设
  5. 修复 - 实施最小修复
  6. 验证 - 确认解决方案有效

调查步骤

# 检查可能导致问题的最近更改
git log --oneline -10
git diff HEAD~3

# 在日志中查找错误模式
grep -r "error\|Error\|ERROR" logs/ 2>/dev/null | tail -20

# 检查测试输出
npm test 2>&1 | tail -50  # 或 pytest、cargo test 等

日志分析(--logs

查找错误

# 带上下文的最近错误
grep -B 5 -A 10 "ERROR" /var/log/app.log

# 按错误类型计数
grep -oE "Error: [^:]*" app.log | sort | uniq -c | sort -rn

# 时间范围内的错误
awk '/2024-01-15 14:/ && /ERROR/' app.log

# 查找重复错误
grep "ERROR" app.log | cut -d']' -f2 | sort | uniq -c | sort -rn | head -20

# 查找错误高峰
grep "ERROR" app.log | cut -d' ' -f1-2 | uniq -c | sort -rn

常见模式

模式 指示 行动
NullPointer 缺少空值检查 添加验证
Timeout 依赖项慢 添加超时、重试
Connection refused 服务宕机 检查健康状态、重试
OOM 内存泄漏 分析、增加限制
Rate limit 请求过多 添加回退、队列

关联查询(--correlate

-- 按端点的错误
SELECT endpoint, count(*) as errors
FROM logs
WHERE level = 'ERROR' AND time > NOW() - INTERVAL '1 hour'
GROUP BY endpoint ORDER BY errors DESC;

-- 随时间变化的错误率
SELECT
  date_trunc('minute', time) as minute,
  count(*) filter (where level = 'ERROR') as errors,
  count(*) as total
FROM logs
WHERE time > NOW() - INTERVAL '1 hour'
GROUP BY minute ORDER BY minute;

-- 跨服务关联请求ID
SELECT service, message, time
FROM logs
WHERE request_id = 'req-12345'
ORDER BY time;

堆栈跟踪分析(--trace

解析堆栈跟踪

import re

def parse_stack_trace(log_content: str) -> list[dict]:
    pattern = r'(?P<exception>\w+Error|\w+Exception): (?P<message>.*?)
(?P<trace>(?:\s+at .+
)+)'
    traces = []
    for match in re.finditer(pattern, log_content):
        traces.append({
            'type': match.group('exception'),
            'message': match.group('message'),
            'trace': match.group('trace').strip().split('
')
        })
    return traces

调查清单

  1. 捕获 - 获取完整错误消息和堆栈跟踪
  2. 时间戳 - 何时开始?
  3. 频率 - 多频繁?是否增加?
  4. 范围 - 所有用户还是特定?
  5. 更改 - 最近部署?
  6. 依赖项 - 外部服务受影响?

输出格式

## 调试报告

**问题:** [简要描述]
**根本原因:** [实际错误]

### 证据

- [发现 1]
- [发现 2]

### 修复

[代码或配置更改]

### 验证

[如何确认修复有效]

### 预防

[如何预防未来发生]

示例

输入: “TypeError: Cannot read property ‘map’ of undefined” 操作: 跟踪未定义值,找到数据应初始化的地方,修复源头

输入: “测试失败” 操作: 运行测试,捕获失败,分析每个失败,修复基础问题

输入: /debug --logs "API 返回 500 错误" 操作: 在日志中搜索 500 状态,查找堆栈跟踪,识别根本原因,检查错误频率

输入: /debug --correlate "间歇性失败" 操作: 运行关联查询查找模式,识别受影响的端点,与事件关联