vscode中launch.json、tasks.json的作用及实例

news2025/6/4 18:11:07

文章目录

  • launch.json是什么
  • 作用
  • 多环境调试简单实例
  • 进阶使用
    • 核心配置项解析
    • 调试第三方程序

launch.json是什么

  • 顾名思义:它是在.vscode文件夹下的launch.json,所以是vscode启动调试的配置文件。
  • 总结:通过定义调试参数、环境变量和启动方式,帮助开发者快速启动和调试代码。

作用

  • 简化调试流程:通过预设参数(如启动文件、命令行参数、环境变量等),避免每次调试时手动输入重复命令。
  • 支持多环境调试:可同时配置多个调试方案,一键切换不同场景。

多环境调试简单实例

  • 假设现在你要写一个工具,需要用到多种语言(node.js、python等)
  • 每个单独的nodejs/py文件运行都需要在命令行/terminal输入一下调用的命令及文件名(很麻烦)
  • 为了简化运行,配置如下launch.json:
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "调试extracted.js",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${workspaceFolder}\\tool_chinese_strings_extracted.js"
        },
        {
            "type": "node",
            "request": "launch",
            "name": "调试log.js",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${workspaceFolder}\\tool_log.js"
        },
        {
            "type": "node",
            "request": "launch",
            "name": "调试testBp.js",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${workspaceFolder}\\testBp.js"
        },
        {
            "name": "调试py_replace",
            "type": "debugpy",
            "request": "launch",
            "program": "${workspaceFolder}\\tool_replacer.py",
        },
        {
            "name": "调试py_genxls",
            "type": "debugpy",
            "request": "launch",
            "program": "${workspaceFolder}\\tool_excel_generator.py",
        },
        {
            "name": "调试py_notepad",
            "type": "debugpy",
            "request": "launch",
            "program": "${workspaceFolder}\\tool_log.py",
        }
    ]
}
  • 得到快捷F5执行列表:
    在这里插入图片描述
  • 这样就很方便(以上是简单的示例)。

进阶使用

核心配置项解析

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: 当前文件", //调试方案的名称(显示在调试下拉菜单中)
            "type": "python", //调试器类型(如 python、node、cppdbg、chrome、debugpy等)
            //调试启动方式,常用 launch(启动新进程)或 attach(附加到已有进程)
            "request": "launch", //调试启动方式
            // (${file} 表示当前打开的文件)    ${workspaceFolder} 表示项目根目录
            "program": "${file}", //要运行的程序入口文件
			//指定要调试的入口文件(例如 HTML 文件)。在浏览器调试场景中,替代 program 字段。             
            "file": "${workspaceRoot}/bin/index.html",
            //控制台类型(如 integratedTerminal 使用VSCode内置终端)
            "console": "integratedTerminal", 
            "args": ["--input", "data.txt"], //传递给程序的命令行参数
            "env": {"DEBUG_MODE": "true"} //设置环境变量
			
			
			

			// 以下可选参数
			// 默认使用系统默认浏览器,但可通过此字段自定义(如:"C:/chrome.exe")
			"runtimeExecutable": "chrome" //"${execPath}" //${execPath} 表示 VS Code 的安装路径
			// 启用源映射(Source Maps),将压缩/编译后的代码映射回原始源代码,便于调试。
			"sourceMaps": true // (适用于 TypeScript、Babel 等转译场景。
			// 定义 Web 服务器的根目录路径,帮助调试器定位源代码文件(尤其是与源映射配合时)。
			"webRoot": "${workspaceRoot}" //表示项目根目录为 Web 根目录。
			"port": 8090 //指定调试会话使用的端口号(默认由调试器自动分配)。
			// 向浏览器运行时传递命令行参数,用于控制浏览器行为(例如禁用安全策略、启用文件访问)
			"runtimeArgs": [
			  "--allow-file-access-from-files", //允许通过 file:// 协议访问本地文件。
			  "--disable-web-security" //禁用浏览器同源策略(开发时常用,但需谨慎)。
			]
			//指定 Chrome 浏览器的用户数据目录。
			//通过隔离用户数据(如缓存、历史记录),避免调试会话影响日常浏览器使用。
			"userDataDir": "${workspaceRoot}/.laya/chrome" //将用户数据存储在项目目录下的 .laya/chrome 文件夹中。
			//覆盖源映射(Source Maps)中的路径,解决编译后路径与本地路径不一致的问题。
			"sourceMapPathOverrides": { //将编译后代码中的 src/ 路径映射到本地项目的 src/ 目录。
			  "src/": "${workspaceRoot}/src/"
			}
			
			// 指定调试时要跳过的文件或目录,避免进入无关代码(如Node.js内部模块或第三方库)
			//让调试过程聚焦于用户自己的代码。
			//<node_internals> 是VSCode预定义的路径别名,表示Node.js的核心模块(如fs、path等)。
			//  /** 表示跳过所有子目录和文件。调试时,单步调试(如F10)会直接跳过这些文件,不会进入其内部。
			"skipFiles": ["<node_internals>/**"]
			"skipFiles": [ //这会同时跳过Node核心模块和项目的node_modules目录
			    "<node_internals>/**",
			    "${workspaceFolder}/node_modules/**"
			]
        }
    ]
}

调试第三方程序

  • 通过 “preLaunchTask” 和 “postDebugTask” 配置调试前后自动执行的任务(需配合 tasks.json 使用)。
  • 简单实例:
// 创建 tasks.json(在 .vscode 文件夹下)
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "安装依赖",       // 任务名称(在 launch.json 中引用)
            "type": "shell",         // 任务类型(执行shell命令)
            "command": "npm install",// 调试前自动安装依赖
            "problemMatcher": []
        },
        {
            "label": "清理临时文件",
            "type": "shell",
            "command": "rm -rf ./tmp/*", // 调试后清理临时文件(Windows 可用 `del .\\tmp\\*`)
            "problemMatcher": []
        }
    ]
}
//launch.json(通过tasks的label关联任务)
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "启动调试",
            "type": "node",
            "request": "launch",
            "program": "${workspaceFolder}/app.js",
            //调试启动前必须完成的任务(若任务失败,调试不会启动)。
            "preLaunchTask": "安装依赖",   // 调试前自动执行的任务名称 
            // 调试结束后自动触发的任务(无论调试成功或失败)。
            "postDebugTask": "清理临时文件" // 调试后自动执行的任务名称
        }
    ]
}
  • 执行流程说明:
    1.启动调试(按 F5)时:
    – 先执行 preLaunchTask → 运行 npm install 安装依赖。
    – 依赖安装成功后,启动调试(运行 app.js)。
    2.结束调试 后:
    – 自动执行 postDebugTask → 清理 ./tmp 目录下的临时文件。

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

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

相关文章

VScode编译调试debug,gpu的cuda程序,Nsight

进行下面操作的前提是&#xff0c;我们的环境已经能跑简单的CUDA程序了。 一、安装Nsight 二、创建launch.json文件 {"version": "0.2.0","configurations": [{"name": "CUDA C: Launch","type": "cuda-gdb…

中企出海大会|打造全球化云计算一张网,云网络助力中企出海和AI创新

全球化是阿里云的长期战略&#xff0c;未来阿里云将持续加大云和 AI 基础设施建设投入。首先是加速打造全球化的云计算网络&#xff0c;一张具备 AI技术服务能力和全球竞争力的云计算网络是阿里云的长期目标。 —— 阿里巴巴集团 CEO、阿里云智能集团董事长兼 CEO 吴泳铭 5 月 …

防范DDoS攻击,服务器稳定性崩溃的根源与高效防御对策

DDoS攻击&#xff08;分布式拒绝服务攻击&#xff09;已成为危害服务器稳定性和业务连续性的主要因素之一。本文将深入探讨为什么服务器一遇到DDoS攻击就崩溃&#xff0c;以及如何从根本上实现有效防御和应对这一威胁&#xff0c;帮助企业提升网络安全水平。 具体内容如下&…

深入理解 SELinux:通过 Nginx 和 SSH 服务配置实践安全上下文与端口策略

目录 一、引言 二、实验环境说明 三、实验 1&#xff1a;Nginx 服务安全上下文配置 3.1 实验目标 3.2 操作步骤 1. 开启 SELinux 并重启系统 2. 安装 Nginx 并创建自定义目录 3. 配置 Nginx 指向自定义目录 4. 分析 SELinux 上下文冲突 5. 修改上下文为合法类型 6. 验…

C++ —— STL容器——string类

1. 前言 本篇博客将会介绍 string 中的一些常用的函数&#xff0c;在使用 string 中的函数时&#xff0c;需要加上头文件 string。 2. string 中的常见成员函数 2.1 初始化函数 string 类中的常用的初始化函数有以下几种&#xff1a; 1. string() …

用JS实现植物大战僵尸(前端作业)

1. 先搭架子 整体效果&#xff1a; 点击开始后进入主场景 左侧是植物卡片 右上角是游戏的开始和暂停键 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevic…

Electron-vite【实战】MD 编辑器 -- 文件列表(含右键快捷菜单,重命名文件,删除本地文件,打开本地目录等)

最终效果 页面 src/renderer/src/App.vue <div class"dirPanel"><div class"panelTitle">文件列表</div><div class"searchFileBox"><Icon class"searchFileInputIcon" icon"material-symbols-light:…

华为云Flexus+DeepSeek征文|华为云Flexus云服务器X实例上部署Dify:打造高效的开源大语言模型应用开发平台

目录 前言 1 Dify与华为云部署概述 1.1 什么是 Dify 1.2 华为云与 Flexus 云服务器的优势 2 云服务器部署 Dify 的步骤详解 2.1 模板选择 2.2 参数配置 2.3 资源栈设置 2.4 确认部署信息并执行 3 部署成功后的操作与平台使用指南 3.1 访问平台 3.2 设置管理员账号 …

高密爆炸警钟长鸣:AI为化工安全戴上“智能护盾”

一、高密爆炸&#xff1a;一声巨响&#xff0c;撕开化工安全“伤疤” 2025年5月27日&#xff0c;山东高密友道化学有限公司的车间爆炸声&#xff0c;像一把利刃划破了化工行业的平静。剧烈的冲击波将车间夷为平地&#xff0c;黑色蘑菇云腾空而起&#xff0c;刺鼻的化学气味弥漫…

机器人学基础——正运动学(理论推导及c++实现)

机器人正运动学 机器人正运动学一般是指从机器人的关节位置到基于参考坐标系下末端执行器的位置。 平移变换和旋转变换 平移变换 假设我们有两个坐标系A和B&#xff0c;坐标系A与B的方位相同&#xff0c;xyz轴的指向都是一致的&#xff0c;即没有旋转变换。有一点p&#xf…

[网页五子棋][对战模块]处理连接成功,通知玩家就绪,逻辑问题(线程安全,先手判定错误)

文章目录 处理连接成功通知玩家就绪逻辑图问题 1&#xff1a;线程安全问题 2&#xff1a;先手判定错误两边都是提示&#xff1a;轮到对方落子![image.png](https://i-blog.csdnimg.cn/img_convert/c570cd26eadbe87ed467bc4edaa7945e.png) 处理连接成功 实现 GameAPI 的 afterC…

【Web应用】若依框架:基础篇11功能详解-系统接口

文章目录 ⭐前言⭐一、课程讲解⭐二、自己动手实操⭐总结 标题详情作者JosieBook头衔CSDN博客专家资格、阿里云社区专家博主、软件设计工程师博客内容开源、框架、软件工程、全栈&#xff08;,NET/Java/Python/C&#xff09;、数据库、操作系统、大数据、人工智能、工控、网络、…

【Docker项目实战篇】Docker部署PDF查看器PdfDing

【Docker项目实战篇】Docker部署PDD查看器PdfDing 一、PdfDing介绍1.1 PdfDing简介1.2 PdfDing主要特点1.3 主要使用场景 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Pd…

【Linux系统】第八节—进程概念(上)—冯诺依曼体系结构+操作系统+进程及进程状态+僵尸进程—详解!

hi&#xff0c;我是云边有个稻草人 偶尔中二的博主^(*&#xffe3;(oo)&#xffe3;)^&#xff0c;与你分享专业知识&#xff0c;祝博主们端午节快乐&#xff01; Linux—本节博客所属专栏—持续更新中—欢迎订阅&#xff01; 目录 一、冯诺依曼体系结构 二、操作系统(Opera…

数据结构——优先级队列(PriorityQueue)

1.优先级队列 优先级队列可以看作队列的另一个版本&#xff0c;队列的返回元素是由是由插入顺序决定的&#xff0c;先进先出嘛&#xff0c;但是有时我们可能想要返回优先级较高的元素&#xff0c;比如最大值&#xff1f;这种场景下就由优先级队列登场。 优先级队列底层是由堆实…

代谢组数据分析(二十六):LC-MS/MS代谢组学和脂质组学数据的分析流程

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包依赖包安装包加载需要的R包数据下载以及转换mzML数据预处理代谢物注释LipidFinder过滤MultiABLER数据预处理过滤补缺失值对数变换数据标准化下游数据分析总结系统信息参考介…

【ARM】【FPGA】【硬件开发】Chapter.1 AXI4总线协议

Chapter.1 AXI4总线协议 作者&#xff1a;齐花Guyc(CAUC) 一、总线介绍 AXI4总线 AXI4总线就像是SoC内部的“高速公路”&#xff0c;负责在不同硬件模块之间高效传输数据。 AXI4协议通过 5个独立通道 传输数据和控制信号&#xff0c;每个通道都有自己的信号线&#xff0c;互…

把 jar 打包成 exe

1. 把自己的项目先正常打成jar包 2. 使用exe4j工具将jar转换为exe 2.1 exe4j下载地址&#xff1a;https://www.ej-technologies.com/download/exe4j/files 2.2 下载完成之后激活 2.3 可以点击Change License&#xff0c;输入秘钥L-g782dn2d-1f1yqxx1rv1sqd 2.4 直接下一步…

【目标检测】检测网络中neck的核心作用

1. neck最主要的作用就是特征融合&#xff0c;融合就是将具有不同大小感受野的特征图进行了耦合&#xff0c;从而增强了特征图的表达能力。 2. neck决定了head的数量&#xff0c;进而潜在决定了不同尺度样本如何分配到不同的head&#xff0c;这一点可以看做是将整个网络的多尺…

【经验】Ubuntu中设置terminator的滚动行数、从Virtualbox复制到Windows时每行后多一空行

1、设置terminator的滚动行数 1.1 问题描述 在终端 terminator 中&#xff0c;调试程序时&#xff0c;只能查看有限行数的打印日志&#xff0c;大约是500行&#xff0c;怎么能增加行数 1.2 解决方法 1&#xff09;安装terminator sudo apt install terminator和 terminato…