SuperAPI AI 工具集

node-inspect-debugger

测试与质量

查看项目

更新于 10-16 07:16

技能介绍

用途:当 console.log 不足以定位问题时,从终端以程序化方式驱动 Node 内置 V8 检查器,进行断点驱动调试:设置断点、step in/over/out、查看调用栈、转储局部与闭包作用域变量、在暂停帧中求值任意表达式。

两种方式:node inspect 为内置命令,无需安装,提供 CLI REPL,适合快速排查,官方建议优先使用;需要自动化(批量设置断点、跨次收集状态、在 agent 循环中非交互调试)时,可用 chrome-remote-interface 走 CDP 脚本化。

主要能力:node inspect 支持 c/cont、n/next、s/step、o/out、pause、sb 设断点(文件与行号、当前文件行号、函数名)、cb 清除断点、breakpoints、bt 回溯、list 查看源码、watch/watchers 监视表达式、repl 进入当前作用域 REPL、exec 单次求值、restart、kill、.exit 退出。附加运行中进程可用 kill -SIGUSR1 <pid> 开启检查器,再用 node inspect -p <pid> 或 ws URL 连接;启动参数包括 node --inspect、node --inspect-brk、node --inspect=0.0.0.0:9230;TypeScript 可配合 tsx 使用 --import tsx 或 -r tsx/cjs。CDP 侧可换用 Profiler/HeapProfiler 采集 CPU 配置或堆快照,并可写入文件后在 Chrome DevTools 查看。

适用场景:Node 测试失败需看中间状态、Ink/React TUI 渲染前状态排查、闭包变量检查、附加到长驻进程采性能或快照、Vitest 单测调试(建议 --no-file-parallelism,jest 用 --runInBand)。

限制与注意:console.log 一分钟内能解决的不必用此方式;TS 源映射下 node inspect CLI 不跟随 sourcemap,断点会落在编译后的 JS,必要时改用 dist/*.js 或 CDP;--inspect 不暂停,容易错过首个断点,需 --inspect-brk;默认端口 9229 可能冲突,可用 --inspect=0 随机端口并从 /json/list 读取;父进程的 --inspect 不会传递给子进程,需用 NODE_OPTIONS;在 debugger 暂停时 Ctrl+C 退出会导致目标保持暂停;--inspect=0.0.0.0 暴露任意代码执行,建议绑定 127.0.0.1。Python 子进程(_SlashWorker、PTY bridge)不在本技能范围。部分项目未在 package.json 中包含 chrome-remote-interface,可安装到临时目录并用 NODE_PATH 引用。