You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Node.js在栈溢出发生前触发调试器断点

问题复现

运行如下无限递归的JS脚本时:

function recurse() {
    return recurse();
}
recurse();

执行node recurse.js命令会直接抛出Maximum call stack size exceeded错误终止,手动加断点逐行执行要跑成千上万次递归,排查效率极低,可以通过VS Code调试器配置实现异常抛出前自动断下。

VS Code 调试配置步骤
  • 打开左侧「运行和调试」面板,点击「创建launch.json文件」,环境选择Node.js,生成基础调试配置文件。
  • 在生成的配置对象中添加两个核心配置项,参考配置如下:
    {
      "type": "node",
      "request": "launch",
      "name": "调试当前JS文件",
      "program": "${file}",
      "pauseForUncaughtExceptions": true,
      "runtimeArgs": ["--stack-size=100"]
    }
    
    • pauseForUncaughtExceptions: true:强制调试器在未捕获异常抛出前自动中断,不会直接把程序跑终止。
    • runtimeArgs: ["--stack-size=100"]:把Node.js默认的调用栈大小调小,递归只需要跑几十层就会触发栈溢出,不用等默认配置下的上万层递归,大幅缩短调试等待时间。
  • 确认调试面板「断点」分类下的未捕获异常选项是勾选状态,不需要手动在代码里加任何业务断点。
  • 选中要调试的recurse.js文件,按F5启动调试,程序触发栈溢出时会自动暂停在异常抛出的前一刻,此时直接查看左侧「调用栈」面板就能看到完整的调用链路,直接定位递归逻辑问题。

如果不想修改默认栈大小,也可以去掉runtimeArgs配置,只开启pauseForUncaughtExceptions也能在溢出时断下,只是等待程序跑到栈溢出的时间会更长。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 09:27:28