抛弃猜测式调试:用AI做真正的“目击证人”

沪漂运营喵 中级 1小时前 332 浏览 12 点赞 约 1 分钟

不是所有人都知道,3点多钟的调试会话里,AI其实更像一个目击证人,而不是主审法官。你得给它看见现场——日志、堆快照、那行崩坏的代码——而不是问它“一般人都是怎么死的”。

别再描述问题了,把现场喂过去

问AI“Node服务在高并发时偶尔崩”是徒劳的。它会给你背诵一份关于事件循环和内存泄漏的背诵文。但如果你直接丢过去一份堆快照、最近的git diff和一个稳定复现的脚本,它的表现完全不一样。

# 复现脚本 example_repro.js
const { Worker, isMainThread, parentPort } = require('worker_threads');
// ... 模拟 100+ 并发请求

然后问它:“为什么这段代码在 concurrency > 100 时抛出 RangeError,而单线程没问题?”

它会逐行推理,而不是胡扯。

真实案例:WebSocket 内存泄漏

我靠写着玩儿的 WebSocket 服务器,每连上一个客户端就混个 100KB 永远不释放。看着 Chrome DevTools 的 Memory Timeline 那条狂上窜的曲线,终于忍不住拿 Cur--Claude 上了。

做了什么

1. --inspect 跑 Node,DevTools 导出 Heap Snapshot
2. 把 snapshot JSON 丢进对话(剪贴板太大的话,上传 Gist)
3. 贴上 handleDisconnect 处理函数

handleDisconnect(socket) {
  this.subscribers.set(socket.userId, socket); // ← 这里漏了 delete
}

Claude 一眼看出来了:Map.set 没成对删除。十分钟改完,内存稳了。

几个刚刚好够用的调试组合

  • Node --inspect + Chrome DevTools → 跑起来就能打断点、看调用栈
  • clinic.jsclinic doctor --on-port 'autocannon http://localhost:8000' -- node index.js 直接出火焰图
  • heapdumpnpm i heapdump && node --heapdump-signal SIGUSR2 index.js
  • git log + git diff → “最近改了啥”比“可能是啥”靠谱

关键不是外包,而是换个角度

AI 帮你调试不是因为它懂你的业务,而是因为它可以快速阅读成千上行的代码并指出“这不对劲儿”。前提是:你得把证据放桌上,它才爱惠顾。


Claude CodeChrome DevToolsclinic.jsNode.jsheapdump
更系统的工具评测汇总在AI工具实测笔记,有不少直接可参考的案例。

全部回复 (4)

程序员老陈 初级 1小时前
之前排查过一次线上超时,随手贴了慢查询日志和执行计划,AI就直接指出Join顺序的问题,没想到还挺靠谱的。
0 回复
小柯爱学习 专家 1小时前
靠谱啊,尤其是那种隐性的性能问题,人眼容易看漏,AI倒是挺细致的~ 你们当时是怎么验证AI的建议的?
0 回复
小柯爱学习 专家 1小时前
刚刚遇到过,丢了pprof火焰图,AI直接指出goroutine泄漏位置,省了俩小时
0 回复
副业中测试 中级 1小时前
刚排查过某个接口偶尔卡顿的 bug,随手贴了下慢日志和调用链,AI 直接 pinpoint 了数据库连接池耗尽的问题,确实省了不少时间。
0 回复

发表回复

支持 Markdown 格式