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

如何在VSCode Extension Host启动时自动附加LSP调试器,无需手动操作

VSCode LSP启动阶段调试解决方案

前置准备

首先确保编译配置开启sourcemap输出,避免只能调试打包后代码的问题:

  • tsconfig.json中设置"sourceMap": true
  • webpack配置中设置devtool: 'source-map',不要使用eval类的devtool配置,打包后将map文件和编译后的js文件放在同一路径下

方案1:配置LSP启动等待调试器附加

修改扩展中LSP实例的初始化配置,给LSP进程增加inspect断点参数,实现启动时自动暂停等待调试器连接:

  1. 在LanguageClient的serverOptions debug配置中增加execArgv参数,指定调试端口和sourcemap开启参数:
const serverOptions = {
  run: { module: serverModule, transport: TransportKind.ipc },
  debug: {
    module: serverModule,
    transport: TransportKind.ipc,
    options: {
      // 自定义调试端口,启动后会在第一行代码暂停等待调试器连接
      execArgv: ['--inspect-brk=9229', '--enable-source-maps']
    }
  }
};
const client = new LanguageClient('你的LSP标识', 'LSP名称', serverOptions, clientOptions);
  1. 在.vscode/launch.json中新增LSP附加调试配置:
{
  "type": "node",
  "request": "attach",
  "name": "Attach to LSP",
  "port": 9229,
  "restart": true,
  "sourceMaps": true,
  // 替换为你打包后LSP服务端代码的存放路径
  "outFiles": ["${workspaceFolder}/dist/server/**/*.js"]
}

启动扩展调试后,再运行该附加配置,即可从LSP入口代码开始调试,不会错过启动阶段逻辑。

方案2:配置复合启动实现自动附加

无需手动触发两次调试操作,配置复合启动项即可同时启动扩展和自动附加LSP调试器:
在.vscode/launch.json中增加复合配置项:

{
  "version": "0.2.0",
  "configurations": [
    // 你原有的扩展启动调试配置,名称为Launch Extension
    {
      "name": "Launch Extension",
      "type": "extensionHost",
      "request": "launch",
      "args": ["--extensionDevelopmentPath=${workspaceFolder}"],
      "preLaunchTask": "npm: watch"
    },
    // 方案1中新增的Attach to LSP配置
    {
      "type": "node",
      "request": "attach",
      "name": "Attach to LSP",
      "port": 9229,
      "restart": true,
      "sourceMaps": true,
      "outFiles": ["${workspaceFolder}/dist/server/**/*.js"]
    }
  ],
  "compounds": [
    {
      "name": "Launch Extension + Debug LSP",
      "configurations": ["Launch Extension", "Attach to LSP"],
      "stopAll": true
    }
  ]
}

直接选择该复合配置启动,VSCode会自动完成扩展启动、LSP调试器附加的全流程,全程无需手动操作。

方案3:修复autoAttachChildProcesses无效问题

如果你想要使用自带的自动附加能力,可按以下步骤排查修复:

  • 按Ctrl+Shift+P(Mac为Cmd+Shift+P)调用命令面板,执行Debug: Toggle Auto Attach,选择Smart模式
  • 在你的extensionHost启动配置中新增"autoAttachChildProcesses": true
  • 重启VSCode后重新启动调试会话即可生效,无需单独配置调试端口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:48:00