返回顶部
d

debug-detective调试侦探

>

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
376
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

debug-detective

Debug Detective — 系统性调试方法论

使用结构化调查技术,高效地跨全栈查找和修复错误。

1. 调试心态

1.1 调试的科学方法

  1. 1. 观察 — 到底发生了什么?(症状、错误信息、日志)
  2. 假设 — 什么可能导致这个问题?(列出3个以上可能性)
  3. 预测 — 如果假设X成立,那么Y应该为真
  4. 测试 — 设计最小的实验来验证预测
  5. 分析 — 测试是证实还是否定了假设?
  6. 重复 — 如果被否定,转向下一个假设;如果被证实,修复并验证

1.2 关键调试原则

  • - 错误绝不在你想象的位置。 在深入之前先扩大搜索范围。
  • 先复现,后修复。 无法复现的错误,也无法验证是否已修复。
  • 一次只改一个东西。 同时进行多项修改,将无法确定是哪个改动修复了问题。
  • 不要相信任何东西。 验证假设——检查你正在阅读的代码是否就是正在运行的代码。
  • 阅读错误信息。 完整地阅读。包括堆栈跟踪。包括由...引起的链条。

1.3 妨碍调试的认知偏差

偏差危害应对策略
确认偏差你寻找支持自己理论的证据,忽略矛盾的证据主动尝试推翻你的假设
锚定效应
即使证据指向别处,第一个理论仍然占主导地位 | 在调查任何假设之前,先写下3个以上假设 | | 近因偏差 | 我刚改了X,所以X一定是问题所在 | 检查git日志——错误可能在你修改之前就存在 | | 可得性偏差 | 上次是竞态条件,所以这次也一定是 | 考虑所有类别:数据、逻辑、时序、配置、环境 | | 沉没成本 | 我已经在这个理论上花了2小时,它一定是对的 | 设定时间盒:每个假设30分钟,然后继续前进 |

1.4 橡皮鸭调试法

大声解释问题(对着一只鸭子、同事或文本文件):

  1. 1. 说明代码应该做什么
  2. 逐行浏览代码,解释每一步
  3. 阐述的过程往往会揭示期望与现实之间的差距

1.5 费曼技巧

  1. 1. 像向非程序员解释一样,写下错误描述
  2. 找出解释中的漏洞——这些就是你理解上的漏洞
  3. 回到代码中填补这些漏洞
  4. 进一步简化你的解释

2. 系统性调试工作流

2.1 六步流程

┌─────────────┐
│ 1. 复现 │ ← 你能可靠地触发这个错误吗?
└──────┬──────┘

┌─────────────┐
│ 2. 隔离 │ ← 缩小范围:哪个组件、输入或路径?
└──────┬──────┘

┌─────────────┐
│ 3. 识别 │ ← 找到根本原因
└──────┬──────┘

┌─────────────┐
│ 4. 修复 │ ← 最小化、有针对性的修改
└──────┬──────┘

┌─────────────┐
│ 5. 验证 │ ← 错误不再复现;没有回归问题
└──────┬──────┘

┌─────────────┐
│ 6. 预防 │ ← 添加测试、监控或文档
└─────────────┘

2.2 复现错误

最小复现清单:

  1. 1. 从干净状态开始(全新安装、空数据库、无痕浏览器)
  2. 列出触发错误的确切步骤
  3. 记录环境:操作系统、运行时版本、浏览器、配置
  4. 剥离无关代码,直到错误被隔离
  5. 如果是间歇性错误:识别时序/并发模式

bash

创建一个最小复现项目


mkdir bug-repro && cd bug-repro
npm init -y

只添加演示错误所需的最小依赖


npm install problematic-library@1.2.3

编写能触发问题的最小脚本

2.3 二分查找调试

当不知道错误在哪里时,使用二分法:

代码二分法:

// 在可疑代码的中点添加一个return/exit
// 如果错误消失 → 错误在中点之后
// 如果错误仍然存在 → 错误在中点之前
// 在缩小后的半段上重复

数据二分法:
bash

如果大量输入导致错误,将其分成两半


head -n 500 input.csv > first_half.csv
tail -n 500 input.csv > second_half.csv

测试每一半——哪个触发了错误?

配置二分法:
bash

注释掉一半配置,测试


缩小到哪个配置选项导致了问题

2.4 阅读堆栈跟踪

Error: Cannot read properties of undefined (reading email)
at getUserEmail (src/services/user.ts:42:18) ← 崩溃的位置
at processOrder (src/services/order.ts:87:24) ← 谁调用了它
at OrderController.create (src/controllers/order.ts:23:5) ← 入口点
at Layer.handle (node_modules/express/lib/router/layer.js:95:5)

从下往上读: 底部显示调用的起源。顶部显示失败的位置。src/services/user.ts:42 这一行是查看的位置,但原因可能在 order.ts:87(传入了 undefined)。

3. Git Bisect

3.1 手动二分查找

bash

开始二分查找


git bisect start

将当前(有问题的)提交标记为bad

git bisect bad

标记一个已知正常的提交(例如,上一个发布标签)

git bisect good v2.0.0

Git 检出了中间点——测试它

如果这个提交有问题:

git bisect bad

如果这个提交正常:

git bisect good

重复直到 Git 识别出第一个有问题的提交

Git 输出:abc1234 is the first bad commit

完成——重置

git bisect reset

3.2 自动二分查找

bash

自动化:提供一个测试脚本,退出码0(正常)或1(有问题)


git bisect start HEAD v2.0.0
git bisect run npm test

或者使用自定义脚本

git bisect run bash -c npm run build 2>/dev/null && \ node -e const { buggyFunction } = require(\./dist\); const result = buggyFunction(\test-input\); process.exit(result === expected ? 0 : 1);

完成后重置

git bisect reset

3.3 带跳过的二分查找

bash

如果某个提交无法测试(例如,由于无关原因构建失败)


git bisect skip

跳过一段无法测试的提交范围

git bisect skip v2.0.1..v2.0.5

4. 前端调试

4.1 Chrome DevTools — 控制台高级功能

js
// $0 — 引用 Elements 面板中当前选中的元素
$0.textContent

// $$() — querySelectorAll 快捷方式
$$(button.primary).length

// copy() — 将任意值复制到剪贴板
copy(JSON.stringify(data, null, 2))

// monitor() — 记录对函数的所有调用
monitor(fetch)
// unmonitor(fetch) 停止

// monitorEvents() — 记录元素上的所有事件
monitorEvents($0, click)
// unmonitorEvents($0) 停止

// queryObjects() — 查找构造函数的所有实例
queryObjects(Promise) // 查找所有存活的 Promise

// table() — 将数组/对象显示为表格
console.table(users, [name, email, role])

// time/timeEnd — 测量执行时间
console.time(render)
renderComponent()
console.timeEnd(render) // render: 42.3ms

// group — 组织相关日志
console.group(API Request)
console.log(URL:, url)
console.log(Method:, method)
console.log(Body:, body)
console.groupEnd()

// assert — 仅在条件失败时记录
console.assert(user.id, User ID is missing, user)

4.2 Sources 面板 — 高级断点

断点类型设置方法使用场景
行断点点击行号在特定行停止
条件断点

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 debug-detective-1776068418 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 debug-detective-1776068418 技能

通过命令行安装

skillhub install debug-detective-1776068418

下载

⬇ 下载 debug-detective v1.0.0(免费)

文件大小: 26.36 KB | 发布时间: 2026-4-15 12:26

v1.0.0 最新 2026-4-15 12:26
Initial release of **debug-detective** skill.

- Provides systematic debugging guidance across application, system, and network layers.
- Covers debugging workflows, cognitive bias pitfalls, and rapid fault isolation strategies.
- Includes deep dives into tools like Chrome DevTools, Node.js/Python debuggers, strace, tcpdump, and database analyzers.
- Offers step-by-step guidance for git bisect, performance profiling, distributed tracing, and production diagnostics.
- Features practical checklists, code/documentation snippets, and prevention strategies for robust debugging.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部