Visual Studio Code中launch.json的解析笔记

<摘要>
launch.json 是 Visual Studio Code 中用于配置调试任务的核心文件。本文解析了其最常用的配置字段,涵盖了基本调试设置、程序控制、环境配置和高级调试功能。理解这些字段能帮助开发者高效配置调试环境,提升开发效率。


<解析>

1. 背景介绍及其概念

背景:在 Visual Studio Code (VSCode) 中进行代码调试时,需要一个配置文件来告诉调试器如何启动和运行程序。launch.json 文件就是这个配置文件,它位于项目工作区的 .vscode 目录下。通过定义不同的“启动配置”(Launch Configuration),开发者可以轻松地调试各种语言和环境下的应用程序。

关键概念

  • 启动配置 (Launch Configuration):一个定义了如何启动程序或附加到已运行进程进行调试的配置对象。一个 launch.json 文件中可以包含多个配置。
  • 调试器 (Debugger):VSCode 通过其强大的调试器 API 与各种语言特定的调试扩展(如 Python, C++, Node.js 等)交互,launch.json 是两者之间的桥梁。

2. 设计意图

launch.json 的设计旨在为开发者提供一个高度可定制化中心化的调试管理方式。其核心目的与考量包括:

  • 灵活性:支持多种调试场景(启动新进程、附加到现有进程、远程调试等)。
  • 可重复性:将调试参数保存为配置文件,避免每次手动输入复杂的命令参数。
  • 环境隔离:允许为不同的开发、测试环境创建独立的配置,互不干扰。
  • 集成性:与 VSCode 的编辑器UI深度集成,方便通过下拉菜单快速切换和启动不同的调试任务。

3. 使用案例

实例一:调试一个 Node.js 服务器

  • 背景:你有一个名为 app.js 的 Node.js 应用,需要在调试模式下启动并监听特定端口。
  • 工作流程
    1. 在 VSCode 中打开项目文件夹。
    2. 切换到“运行和调试”视图,点击“创建 launch.json 文件”。
    3. 选择“Node.js”环境后,VSCode 会自动生成一个基础配置。
    4. 修改配置后,按 F5 启动调试,VSCode 会启动程序并在断点处暂停。

对应的 launch.json 配置片段

{"version": "0.2.0","configurations": [{"name": "Launch Node.js Server","program": "${workspaceFolder}/app.js","request": "launch","type": "node","console": "integratedTerminal","restart": true,"runtimeExecutable": "node"}]
}

实例二:调试一个 Python 脚本并传递参数

  • 背景:需要调试一个处理数据的 Python 脚本 main.py,并需要为其传递命令行参数 --input data.csv
  • 工作流程
    1. 确保已安装 Python 扩展。
    2. 创建或打开 launch.json,选择“Python”配置模板。
    3. args 数组中指定参数。
    4. 在脚本中设置断点,然后启动调试。

对应的 launch.json 配置片段

{"version": "0.2.0","configurations": [{"name": "Run Python with Args","type": "python","request": "launch","program": "${workspaceFolder}/main.py","args": ["--input", "data.csv"],"console": "integratedTerminal"}]
}

4. 常用字段解析(图文并茂)

以下流程图展示了一个典型的 VSCode 调试会话中,launch.json 核心字段如何协同工作:

launch
attach
调试器执行
program: 指定运行文件
运行与调试
args: 传入命令行参数
env: 设置环境变量
用户启动调试 F5
解析 launch.json 配置
name: 选择配置
request: 决定调试模式
启动新进程
附加到现有进程
type: 选择调试器
输出到 console 指定终端

5. 核心字段表格总结

下表详细解析了 launch.json 中最常用的一些字段:

字段名 (Field)含义与作用示例值
name**【必填】**配置的名称,显示在调试下拉列表中。"Launch Program"
type**【必填】**要使用的调试器类型。这取决于你安装的扩展,如 node, python, cppdbg 等。"node"
request**【必填】**调试请求类型。launch:启动新程序;attach:附加到已运行的进程。"launch"
program**【launch 必需】**程序启动入口文件的绝对路径。"${workspaceFolder}/app.js"
args**【可选】**传递给程序进行调试的命令行参数列表。["--port", "3000"]
env**【可选】**环境变量键值对对象。可以覆盖或设置进程的环境变量。{"PORT": "3000", "NODE_ENV": "development"}
console**【可选】**指定输出显示在哪里。可选值:internalConsole, integratedTerminal, externalTerminal"integratedTerminal"
cwd**【可选】**程序启动时的工作目录。"${workspaceFolder}/src"
preLaunchTask**【可选】**在启动调试前运行的任务(在 tasks.json 中定义),例如编译代码。"build"
restart【可选】(Node.js等)在调试终止后自动重启程序。true
skipFiles**【可选】**在单步调试时希望跳过的文件路径数组,如第三方库的文件。["<node_internals>/**"]

${workspaceFolder} 是 VSCode 预定义的变量,表示当前打开的工作文件夹的绝对路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/97473.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/97473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

试试 Xget 加速 GitHub 克隆仓库

引言 在全球化软件开发环境中&#xff0c;开发者经常面临跨地域访问GitHub等平台的网络挑战&#xff1a;下载速度缓慢、连接不稳定、甚至完全无法访问。这些问题严重影响了开发效率和协作体验。Xget作为一个开源的高性能资源获取加速引擎&#xff0c;通过智能路由、多节点分发…

优雅处理Go中的SIGTERM信

在Go语言中优雅处理SIGTERM信号需通过os/signal包实现&#xff0c;核心流程包括信号注册、异步监听和资源清理。SIGTERM 是一种常见的进程终止信号&#xff0c;它允许程序在退出前执行必要的清理操作。与之不同&#xff0c;SIGKILL 信号无法被进程捕获或忽略。未处理的 SIGTERM…

《R for Data Science (2e)》免费中文翻译 (第6章) --- scripts and projects

写在前面 本系列推文为《R for Data Science (2)》的中文翻译版本。所有内容都通过开源免费的方式上传至Github&#xff0c;欢迎大家参与贡献&#xff0c;详细信息见&#xff1a; Books-zh-cn 项目介绍&#xff1a; Books-zh-cn&#xff1a;开源免费的中文书籍社区 r4ds-zh-cn …

GitHub Spark深度体验:是革命前夜,还是又一个“大厂玩具”?

最近&#xff0c;AI 编码工具层出不穷&#xff0c;几乎每天都有新概念诞生。而当 GitHub 这样的行业巨头携“Vibe Coding”概念入场时&#xff0c;所有开发者的期待值都被瞬间拉满。GitHub Spark&#xff0c;一个承诺能用自然语言将你的想法直接变成全栈应用的工具&#xff0c;…

科学研究系统性思维的方法体系:研究设计相关模版

一、研究设计方案模板 模板说明本模板基于《研究设计原理与方法》深度解读报告的理论框架&#xff0c;帮助研究者制定系统性的研究设计方案。模板整合了因果推断理论、效度控制框架和现代实验设计原理。1. 研究问题界定与假设陈述 1.1 研究问题核心要素 研究问题&#xff08;明…

法律审查prompt收集

当前DeepSeek等大模型已经具备初步合同审查能力。 这里收集合同审查及相关prompt&#xff0c;不管是做Coze等Agent&#xff0c;还是开发LLM应用&#xff0c;都有可能用到这些prompt。 https://github.com/LeeXYZABC/law_propmpts.git 1 条款分析 system_prompt&#xff0c;L…

贪心算法解决活动选择问题:最多不重叠活动数量求解

题目描述问题背景活动选择问题是贪心算法的经典应用场景之一。假设有若干个活动&#xff0c;每个活动都有独立的开始时间和结束时间&#xff0c;且同一时间只能进行一个活动。要求从这些活动中选择出最大数量的不重叠活动&#xff0c;即任意两个选中的活动&#xff0c;前一个活…

2025年如何批量下载雪球帖子和文章导出pdf?

之前分享过雪球文章下载 2025 批量下载市场高标解读/配置喵/wangdizhe 雪球帖子/文章导出excel和pdf 这里以市场高标解读这个号为例 抓取下载的所有帖子excel数据包含文章日期&#xff0c;文章标题&#xff0c;文章链接&#xff0c;文章简介&#xff0c;点赞数&#xff0c;转…

【C++】红黑树(详解)

文章目录上文链接一、什么是红黑树二、红黑树的性质1. 颜色规则2. 红黑树的规则为什么可以控制平衡3. 红黑树的效率三、红黑树的整体结构四、红黑树的插入1. 空树的插入2. 插入节点的父亲为黑色3. 插入节点的父亲为红色(1) 叔叔为红色&#xff1a;变色(2) 叔叔为空或为黑色&…

AI提升SEO关键词效果新策略

内容概要 在2025年&#xff0c;人工智能&#xff08;AI&#xff09;技术正全面革新搜索引擎优化&#xff08;SEO&#xff09;的关键词优化模式。通过智能分析用户搜索意图与语义关联&#xff0c;AI能够精准匹配关键词并进行高效布局。本文将深入探讨AI驱动的关键词策略升级方案…

手动安装的node到nvm吧版本管理的过程。

前言 本文记录个人在使用nvm包管理器安装node 14版本 npm安装失败&#xff0c;进行手动安装的node到nvm吧版本管理的过程。 安装node 14 时 npm总是安装失败&#xff0c;如下图 通过手动下载对于版本 node下载地址 下载解压点击所需的版本下载后解压 修改解压后的文件夹名称…

Python爬虫实战:构建Widgets 小组件数据采集和分析系统

1. 引言 1.1 研究背景 在当今数字化时代,Widgets 作为用户界面的基本组成元素,广泛应用于移动应用、网站和桌面软件中,其设计质量直接影响用户体验。随着市场竞争的加剧,了解市场上各类 Widgets 产品的特征、价格区间、用户评价等信息,对于产品设计和商业决策具有重要价…

1.1 Internet简介

1.网络, 计算机网络, 互联网 2.不同的角度认识Internet1.网络, 计算机网络, 互联网 网络表示连接两点以上的通路系统比如:a.你家到邻居家的小路 -> 一个小网络b.一个村子的所有道路 -> 一个更大的网络c.送外卖的小哥骑车走的路线 -> 一个配送网络计算机网络表示专门传…

pytest使用allure测试报告

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 选用的项目为Selenium自动化测试Pytest框架实战&#xff0c;在这个项目的基础上说allure报告。 allure安装 首先安装python的allure-pytest包 pip install allu…

PortSwigger靶场之SQL injection with filter bypass via XML encoding通关秘籍

一、题目分析该实验室的库存查询功能存在 SQL 注入漏洞。查询结果为这些信息会出现在应用程序的响应中&#xff0c;因此您可以利用“联合”攻击来从其他表中获取数据。该数据库中有一个“用户”表&#xff0c;该表包含了已注册用户的用户名和密码。要解决&#xff0c;需进行一次…

Cocos游戏中自定义按钮组件(BtnEventComponent)的详细分析与实现

概述在Cocos游戏开发中&#xff0c;按钮交互是用户界面中最基础且重要的组成部分。原生的Cocos Button组件虽然功能完善&#xff0c;但在复杂的游戏场景中往往无法满足多样化的交互需求。本文将详细分析一个功能强大的按钮组件BtnEventComponent&#xff0c;它提供了多种交互模…

终于完成William F. Egan所著的Practical RF System Design的中文版学习资料

终于完成William F. Egan所著的Practical RF System Design的中文版学习资料 该文档聚焦RF系统的分析与设计。书中先介绍系统设计流程、书籍结构及工具&#xff08;如电子表格、测试与仿真&#xff09;&#xff0c;接着围绕RF系统关键参数展开&#xff1a;讲解增益计算&#xf…

嵌入式Linux驱动开发:蜂鸣器驱动

嵌入式Linux驱动开发&#xff1a;蜂鸣器驱动 1. 引言 本文档详细记录了基于i.MX6ULL处理器的蜂鸣器驱动开发过程。内容涵盖驱动的理论基础、代码实现、设备树配置以及用户空间应用程序的编写。本文档严格遵循用户提供的代码和文档&#xff0c;确保理论与实践的紧密结合。本文档…

Qt中的锁和条件变量和信号量

Qt中的锁和条件变量和信号量 C11中引入智能指针用来解决锁忘记释放的问题 代码如下&#xff1a; void Thread::run() {for(int i0;i<50000;i){QMutexLocker locker(&mutex);//mutex.lock();num;//mutex.unlock();} }大括号结束的时候&#xff0c;生命周期踩结束&#xf…

智能电视MaxHub恢复系统

公司的MaxHub智能电视又出故障了。 去年硬件故障返厂&#xff0c;花了8600多元。 这次看上去是软件故障。开机后蓝屏报错。 按回车键&#xff0c;电视重启。 反复折腾几次&#xff0c;自行修复执行完毕&#xff0c;终于可以进入系统了。 只不过进入windows10后&#xff0c;图…