node.js调试时生成的快照文件默认保存在系统临时目录:heap-.heapsnapshot位于/tmp/(linux/macos)或appdata/local/temp/(windows),isolate-.log则输出到当前工作目录(即process.cwd(),通常是项目根目录)。

VSCode 本身不生成可导出的性能剖析文件(如 CPU profile、heap snapshot),它只负责触发采集并保存二进制快照,真正能被分析和导出的格式必须经 Chrome DevTools 或专用工具处理。
Node.js 调试时生成的快照文件在哪?
VSCode 启动 node --inspect 后,你手动点击 “Take Heap Snapshot” 或录制 CPU Profile,生成的文件默认保存在系统临时目录,不是项目里,也不是 VSCode 工作区中:
-
heap-*.heapsnapshot文件路径类似:/tmp/v8_heap_snapshot_*.heapsnapshot(Linux/macOS)或C:\Users\XXX\AppData\Local\Temp\v8_heap_snapshot_*.heapsnapshot(Windows) -
isolate-*.log(来自--prof)默认输出到当前工作目录,即process.cwd(),通常是项目根目录 - VSCode 内置的 “Export” 按钮(如右键快照 → Export)只支持导出为
.heapsnapshot或.cpuprofile,但该功能仅在快照已加载到内存后才可用——它不帮你找原始文件,也不打包日志
如何让 --prof 日志可导出且可用?
--prof 生成的是 V8 的底层采样日志(isolate-*.log),不能直接打开,必须用 node --prof-process 转成可读格式。常见错误是只生成日志却没转换:
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
- 确保
runtimeArgs中包含--prof,且放在launch.json的runtimeArgs字段下,不是args - 启动调试后,等程序运行几秒再停止,否则日志为空
- 终端执行:
node --prof-process isolate-0x*.log > prof.txt(Linux/macOS)或node --prof-process isolate-0x*.log > prof.txt(Windows) - 生成的
prof.txt是纯文本调用栈汇总,适合 grep 热点函数;若要火焰图,需额外用0x或speedscope工具转换
Chrome DevTools 导出的 .cpuprofile 和 .heapsnapshot 怎么复用?
从 chrome://inspect 或 VSCode 的 Profile 面板导出的文件,是标准 JSON 格式,可跨工具复用:
-
.cpuprofile:可直接拖进 Speedscope(speedscope.app)查看交互式火焰图;也可用 Node.js 自带的node --cpu-prof-process(v18.19+)转成文本 -
.heapsnapshot:必须用 Chrome DevTools 的 Memory 面板打开(File → Load),VS Code 内置查看器仅支持基础筛选(如按构造函数名过滤),无法做 retainers 分析或对比快照 - 注意文件体积:
.heapsnapshot常达百 MB,别用文本编辑器打开,也别误传到 Git —— 可加.gitignore:*.heapsnapshot、*.cpuprofile、isolate-*.log
为什么 launch.json 里配了 --max-old-space-size 却没生效?
这个参数根本不会影响快照内容或导出行为,但它决定 Node.js 是否能成功生成大堆快照。常见失效原因是:
- 写在
args里(传给脚本),而不是runtimeArgs(传给 node 进程) - 用了
"type": "node"旧模式,新调试器("type": "pwa-node")才真正支持该参数透传 - 实际生效需配合
"runtimeExecutable"指向特定 Node 版本,否则 VSCode 可能仍调用系统默认 node(尤其 macOS Homebrew / nvm 环境下) - 更可靠的做法:在项目根目录建
.nodejsrc,写入--max-old-space-size=4096,Node.js 启动时自动读取
真正导出前,先确认你导出的是“可分析的数据”,不是调试器缓存的中间态——快照文件路径隐蔽、格式依赖外部工具、参数位置极易放错,这三个点卡住大多数人。










