当前位置:首页 > 文章列表 > 文章 > 软件教程 > VS Code launch compound 怎样同时启动多个调试配置

VS Code launch compound 怎样同时启动多个调试配置

来源:17golang原创 2026-10-20 23:57:14 0浏览 收藏

如果一个项目需要同时调试服务端和客户端,反复在 VS Code 里按两次启动既慢又容易漏掉配置。launch.json 的 compounds 可以把两个独立的调试配置组合成一个入口,选择一次就同时启动多个会话。

官方地址:https://code.visualstudio.com/docs/debugtest/debugging-configuration

先记住这几个关系
  • configurations 保存真正可启动的调试配置,compounds 只负责按名称引用它们。
  • compound 中列出的配置默认会并行启动,不是按数组顺序串行执行。
  • preLaunchTask 可以在组合启动前运行任务,stopAll 为 true 时手动停止一个会话会联动停止组合中的会话。

先从 Run and Debug 打开 launch.json

先用 VS Code 打开项目文件夹,再从左侧 Activity Bar 进入 Run and Debug。如果项目还没有调试配置,选择创建 launch.json,再选择目标语言或运行时。项目级配置通常保存为项目根目录下的 .vscode/launch.json,这样配置可以跟着项目一起维护。

VS Code 官方文档把这个文件分成两层:configurations 是可单独选择的启动项,compounds 是多个启动项的组合。先把单个配置写正确,再组合它们,排错会比直接堆一个 compound 清楚。

原创 VS Code 调试配置界面说明图,展示 configurations 中的 Server 和 Client 以及 compounds 的引用关系
图1:launch.json 中独立调试配置与 compound 引用关系的界面说明图,不是真实软件截图。

先定义两个可以单独启动的配置

下面用 Node.js 的服务端和客户端作为示例。实际项目中的 type、program 和其他字段,要按已安装的调试扩展支持的 schema 调整;示例重点是配置名称和组合关系。

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Server",
      "program": "${workspaceFolder}/server.js"
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Client",
      "program": "${workspaceFolder}/client.js"
    }
  ]
}

这里的 name 是后面引用配置的关键。Server 和 Client 必须在当前工作区内保持清晰、唯一;如果只是想确认单个入口是否可用,可以先在 Run and Debug 的配置下拉框中分别启动它们。

用 compounds 把两个入口组合起来

确认两个配置都能独立使用后,在同一个文件中增加 compounds 数组。它与 configurations 同级,组合项中的 configurations 数组填写的是前面两个配置的 name,不是文件名,也不是数组下标。

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Server",
      "program": "${workspaceFolder}/server.js"
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Client",
      "program": "${workspaceFolder}/client.js"
    }
  ],
  "compounds": [
    {
      "name": "Server and Client",
      "configurations": ["Server", "Client"],
      "stopAll": true
    }
  ]
}

保存后,Server and Client 会出现在调试配置下拉框里。启动这个组合项时,VS Code 会同时启动被引用的两个调试配置;它不是把两个配置复制一份,也不会改变它们单独启动时的行为。

需要准备动作时再加 preLaunchTask

有些项目需要先编译、生成资源或启动一个准备任务。此时可以在 compound 上设置 preLaunchTask,让它在组合中的调试会话启动前执行。任务名称必须对应工作区 .vscode/tasks.json 中的 label,也可以使用 ${defaultBuildTask} 引用默认构建任务。

{
  "compounds": [
    {
      "name": "Server and Client",
      "configurations": ["Server", "Client"],
      "preLaunchTask": "build-debug-assets",
      "stopAll": true
    }
  ]
}

这里的 JSON 只是说明 compound 字段,实际使用时要把它合并进前面的完整 launch.json,不要在同一个文件里重复写两个顶层 compounds。如果准备任务失败,先处理任务本身,不要把问题误判成 compound 没有启动。

从下拉菜单启动并观察两个会话

  1. 打开 Run and Debug 视图,在顶部配置下拉框选择 Server and Client。
  2. 点击绿色启动按钮,或按 F5 开始调试。
  3. 查看调试区域的 CALL STACK,确认服务端和客户端分别作为活动会话出现。
  4. 需要切换查看对象时,在 Debug toolbar 中选择当前活动会话;断点、变量和调试控制会作用于当前选中的会话。
原创 VS Code 运行与调试界面说明图,展示 Server and Client 组合项和两个活动调试会话
图2:Run and Debug 中组合调试会话的界面状态说明图,不是真实软件截图。

如果设置了 stopAll: true,手动停止其中一个会话时,组合里的其他会话也会一起停止。它适合客户端和服务端必须成对运行的项目;如果两个会话需要各自独立保留,可以去掉该属性或改为 false。

为什么看不到 compound 或启动结果不对

现象优先检查处理方向
下拉框没有 Server and Clientcompounds 是否与 configurations 同级,JSON 是否保存成功确认文件位于当前工作区的 .vscode/launch.json
组合项出现但启动失败被引用的 name 是否完全一致,type 对应的调试扩展是否启用先单独启动 Server 和 Client,再回到组合项
以为会按顺序启动compound 的启动语义它默认并行启动;需要等待服务就绪时,应使用具体调试器支持的任务或启动机制
停止一个后另一个仍在运行stopAll 的值需要联动停止时,把它设置为 true

最后用这份清单确认配置

  • 项目已经打开为文件夹或工作区,配置文件在当前项目的 .vscode/launch.json。
  • configurations 中的每个 name 都能单独启动,且没有拼写差异。
  • compounds.configurations 引用的是配置名称,而不是文件路径。
  • 需要准备动作时,preLaunchTask 对应的任务标签确实存在。
  • 需要联动结束时使用 stopAll: true,并接受多个会话同时停止的结果。

相关问题

compound 能不能只启动两个配置中的一个?

不能把 compound 当成可选过滤器。需要只启动一个时,直接从配置下拉框选择原始配置;需要不同组合时,可以定义另一个 compound。

compound 是串行启动还是并行启动?

官方配置语义是同时启动被列出的配置。若一个服务必须先就绪,再启动另一个服务,要把等待逻辑放进任务或具体调试器支持的启动配置中。

多个配置的 name 可以重复吗?

不要重复。compound 通过名称查找配置,名称不清晰或不唯一会让引用和下拉菜单都难以判断。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
VS Code Dev Containers 怎样区分本地与容器扩展VS Code Dev Containers 怎样区分本地与容器扩展
上一篇
VS Code Dev Containers 怎样区分本地与容器扩展
VS Code Profiles 怎样导出项目专用配置
下一篇
VS Code Profiles 怎样导出项目专用配置
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    570次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    614次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    641次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    602次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    419次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码