Node.js进程必须启动时加--inspect或--inspect-brk,否则VS Code无法通过V8 Inspector协议调试或性能分析;两者与SkyWalking Agent不可共存,CPU Profile和Heap Snapshot需用Chrome DevTools深度分析。

Node.js进程必须启动时加--inspect或--inspect-brk
VS Code 的调试器和性能监控能力都依赖 V8 Inspector 协议,没这个就等于没接通探针。不是“装了插件就能看”,而是 Node 进程本身得暴露调试端口。
-
--inspect启动后进程立即运行,调试器需手动附加;--inspect-brk会首行暂停,适合调试入口逻辑 - 开发环境建议固定端口,比如
--inspect=9229,避免被其他进程占用或冲突 - 如果用
npm start启动,确保 script 中已包含该参数(如"start": "node --inspect=9229 server.js"),否则 launch.json 里配了也没用 - 启动后终端应输出类似
Debugger listening on ws://127.0.0.1:9229/...,没这行说明参数未生效
launch.json 配置必须匹配 runtimeArgs 和 port
VS Code 不会自动识别你命令行里怎么起的 Node,它只认 launch.json 里写的配置。错一个字段,CPU Profile 就录不到。
ZenHeart zenlink 与 zenlink-mcp 为 OpenClaw,涵盖安装、MCP 注册、钩子接线、入站轮询及升级维护。
- type 必须是
pwa-node(新版推荐),不是node;旧版node类型不支持完整性能采样 - 若手动指定了
--inspect=9229,launch.json 里就得显式设"port": 9229 - 不要混用
program和runtimeExecutable:直接跑 JS 文件用program;用 npm/nodemon 启动就用runtimeExecutable+runtimeArgs - 常见坑:
runtimeArgs写成["--inspect", "server.js"]—— 错!server.js不是参数,是 node 的执行目标,应由program或args控制
SkyWalking Agent 与 VS Code 调试器不能共存
两者都试图接管 Node 进程的底层行为,同时启用会导致 ERR_INSPECTOR_ALREADY_ACTIVE 或静默崩溃,不是兼容问题,是架构冲突。
- SkyWalking Java Agent 是 JVM 层面注入,但 Node.js 探针(如
skywalking-backend-nodejs)是通过 patch require / hook native modules 实现的,和 V8 Inspector 抢资源 - 本地开发阶段优先用 VS Code +
--inspect做单点深度分析;APM 全链路监控应放在测试/预发环境,用独立部署的 SkyWalking OAP + Agent - 若硬要在本地测 Agent,必须关掉所有 VS Code 调试配置,改用
node --require ./agent.js server.js启动,并靠日志和curl http://localhost:12800查健康状态 - SkyWalking 官方明确不推荐在开发机上同时启用探针和 Chrome DevTools 类工具——它们底层都依赖相同的 V8 instrumentation API
录制 CPU Profile 后必须用 Chrome DevTools 打开
VS Code 内置的 Profile 查看器只能显示扁平列表,看不出调用栈深度、函数嵌套关系、I/O 阻塞点,真正有用的分析全在 Chrome 里。
- 录制后生成的
isolate-*.cpuprofile文件,别双击用 VS Code 打开——它只会当 JSON 渲染,毫无意义 - 正确路径:打开
chrome://devtools→ 右上角三个点 → More Tools → Performance → Load Profile → 选文件 - 重点关注 “Main” 线程的火焰图,黄色系是 JS 执行,绿色系是渲染,红色系是长任务(>50ms),点击可下钻到具体函数
- 堆快照(Heap Snapshot)同理:VS Code 只能按构造函数过滤,Chrome 的 Memory 面板支持 Dominator Tree、Allocation Sampling、Retainer Chain 等关键视图
node --inspect 的数据采出来。


















