askill
debug

debugSafety 95Repository

Systematic debugging methods, log analysis, and performance diagnostics. Use when debugging issues, analyzing errors, or troubleshooting incidents.

29 stars
1.2k downloads
Updated 2/26/2026

Package Files

Loading files...
SKILL.md

调试技能

本技能提供系统化的调试方法和技巧。

触发条件

  • 调试代码问题
  • 分析错误日志
  • 调查性能问题
  • 排查生产事故
  • 修复 Bug

调试原则

黄金法则

  1. 复现问题 - 先能稳定复现,再开始调试
  2. 最小化 - 找到最小可复现用例
  3. 二分法 - 缩小问题范围
  4. 假设验证 - 提出假设,验证假设
  5. 记录过程 - 记录尝试过的方法

调试流程

问题描述 → 复现问题 → 缩小范围 → 定位原因 → 修复验证 → 记录总结

问题描述模板

记录时包含以下要素:

要素内容
问题描述简要描述问题现象
预期 vs 实际期望行为与实际行为的差异
复现步骤可稳定复现的最小步骤
环境信息OS、语言版本、依赖版本
错误信息完整的错误堆栈或日志
已尝试方案每个方案及其结果

日志调试

有效的日志输出

// ❌ 无用的日志
console.log("here");
console.log(data);

// ✅ 有信息量的日志
console.log("[UserService.createUser] 开始创建用户:", {
  email: user.email,
  timestamp: new Date().toISOString(),
});

console.log("[UserService.createUser] 数据库插入成功:", {
  userId: result.id,
  duration: Date.now() - startTime,
});

console.error("[UserService.createUser] 创建失败:", {
  error: error.message,
  stack: error.stack,
  input: { email: user.email },
});
# ❌ 无用的日志
print("here")
print(data)

# ✅ 有信息量的日志
import logging
logger = logging.getLogger(__name__)

logger.info(f"[create_user] 开始创建用户: email={email}")
logger.info(f"[create_user] 创建成功: user_id={user.id}, duration={duration}ms")
logger.error(f"[create_user] 创建失败: error={str(e)}", exc_info=True)

日志级别使用

级别用途示例
DEBUG详细调试信息函数参数、中间状态
INFO正常操作信息用户登录、订单创建
WARN警告但可继续配置缺失使用默认值
ERROR错误但可恢复API 调用失败重试
FATAL致命错误需退出数据库连接失败

断点调试

VS Code 调试配置 (.vscode/launch.json)

场景type关键配置
Node.jsnodeprogram, preLaunchTask, outFiles
Pythonpythonprogram: "${file}", integratedTerminal
Jest 测试nodeprogram: jest, args: ["--runInBand"]

条件断点

在循环中设置条件表达式 (如 item.id === 'target-id'),仅在满足条件时暂停。

网络与数据库调试

详见 network-debug.md

  • 网络调试: Axios 拦截器日志、cURL 调试技巧
  • 数据库调试: Prisma/SQLAlchemy 查询日志、慢查询分析 (EXPLAIN ANALYZE)

性能调试

详见 performance-debug.md

  • 时间测量: performance.now() / console.time / Python timeit 装饰器
  • 内存分析: Node.js process.memoryUsage() / Python tracemalloc

前端调试与常见问题

详见 frontend-debug.md

  • Console 高级方法: group / table / assert / trace / count
  • React DevTools: displayName / useDebugValue
  • 常见 JS 陷阱: 忘记 await、闭包捕获、this 丢失

调试清单

## 调试前

- [ ] 能稳定复现问题吗?
- [ ] 最小复现用例是什么?
- [ ] 最近改动了什么?

## 调试中

- [ ] 查看错误日志和堆栈
- [ ] 添加必要的日志输出
- [ ] 使用断点逐步执行
- [ ] 检查输入数据是否正确
- [ ] 检查环境变量和配置

## 调试后

- [ ] 修复是否解决了根本原因?
- [ ] 是否需要添加测试?
- [ ] 是否需要更新文档?
- [ ] 是否有类似问题需要检查?

最佳实践

  1. 先复现后调试 - 不能复现就无法确认修复
  2. 二分法定位 - 缩小问题范围
  3. 记录尝试 - 避免重复无效尝试
  4. 查看最近改动 - git diff, git log
  5. 橡皮鸭调试 - 向他人解释问题
  6. 休息一下 - 换个思路
  7. 搜索错误信息 - 可能他人遇到过
  8. 检查假设 - 你认为正确的可能是错的
  9. 简化问题 - 去除无关因素
  10. 写测试固化 - 防止问题复现

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

87/100Analyzed 2/19/2026

Comprehensive debugging skill with clear methodology, code examples in TypeScript/Python, VS Code configurations, and practical checklists. Well-structured with YAML frontmatter, tags, and references to specialized guides. Covers the full debugging lifecycle from problem description to resolution verification. The skill is generic and reusable across projects.

95
85
90
88
88

Metadata

Licenseunknown
Version-
Updated2/26/2026
Publisherxiaobei930

Tags

apiobservability