VS Code `launch.json` 完整配置指南:参数详解 + 配置实例

文章目录

    • 📦 一、基本结构
    • 🔍 二、单个配置项详解
      • 示例配置:
    • 🧩 三、字段说明与可选值
    • 📁 四、常用变量(宏替换)
    • 🛠️ 五、常见配置实例
      • 1️⃣ 调试当前打开的 `.py` 文件
      • 2️⃣ 调试 Jupyter Notebook
      • 3️⃣ 调试 Pytest 测试用例
      • 4️⃣ 调试深度学习训练脚本(带 GPU 和环境变量)
    • 📝 六、`.env` 文件示例
    • 🧪 七、如何创建和编辑 `launch.json`
      • 步骤如下:
    • 🧠 八、小贴士
    • 📚 九、参考文献

在使用 Visual Studio Code (VS Code) 进行代码调试时,launch.json 是一个非常关键的配置文件。它允许你定义多个调试任务,适用于不同的开发场景(如训练脚本、Jupyter Notebook、单元测试等)。

本文将全面解析 launch.json 的结构、字段含义、可选参数、变量使用以及常见配置示例。


📦 一、基本结构

{"version": "0.2.0","configurations": [{// 每个配置项}]
}
  • "version":表示该文件的格式版本(通常为 "0.2.0")。
  • "configurations":是一个数组,包含多个调试配置对象,每个对象对应一个调试任务。

🔍 二、单个配置项详解

示例配置:

{"name": "Python: 调试训练脚本","type": "debugpy","request": "launch","program": "${file}","console": "integratedTerminal","justMyCode": false,"args": ["--epochs", "10","--batch-size", "32"],"env": {"CUDA_VISIBLE_DEVICES": "0"},"envFile": "${workspaceFolder}/.env","stopOnEntry": false,"subProcess": true,"cwd": "${workspaceFolder}","debugOptions": ["RedirectOutput"]
}

🧩 三、字段说明与可选值

字段名类型描述可选值
"name"string显示在调试器中的名称自定义
"type"string使用的调试器类型"debugpy", "python", "pwa-node"
"request"string请求类型"launch"(启动程序)、"attach"(附加到进程)
"program"string主程序入口路径(支持变量)文件路径,如当前文件 ${file},以及特定${workspaceFolder}/train.py
"console"string控制台输出方式"integratedTerminal""none""internalConsole"
"justMyCode"boolean是否只调试用户代码truefalse
"args"array向程序传递的命令行参数多个字符串组成的数组
"env"object设置环境变量键值对形式
"envFile"string加载 .env 文件文件路径
"stopOnEntry"boolean是否在入口暂停truefalse
"subProcess"boolean是否调试子进程truefalse
"cwd"string当前工作目录文件路径
"module"string指定运行模块(替代 program"pytest""unittest"
"debugOptions"array特殊调试选项"RedirectOutput""DjangoDebugging""Gevent"

📁 四、常用变量(宏替换)

VS Code 支持一些预定义变量,用于动态构建路径和内容:

变量名含义
${workspaceFolder}当前工作区根目录
${workspaceFolder:name}多根项目中指定名称的根目录
${file}当前打开的文件路径
${fileDir}当前文件所在目录
${fileBasenameNoExtension}当前文件名(不含扩展名)
${env:VAR_NAME}获取系统环境变量,例如 ${env:HOME}

🛠️ 五、常见配置实例

1️⃣ 调试当前打开的 .py 文件

{"name": "Python: 调试当前文件","type": "python","request": "launch","program": "${file}","console": "integratedTerminal"
}

✅ 适用于快速调试任意 Python 文件,无需修改配置。


2️⃣ 调试 Jupyter Notebook

{"name": "Python: 调试Jupyter Notebook","type": "python","request": "launch","program": "${file}","console": "integratedTerminal","justMyCode": false
}

✅ 支持 .ipynb 文件调试(需安装 Jupyter 扩展)。


3️⃣ 调试 Pytest 测试用例

{"name": "Python: 调试测试用例","type": "python","request": "launch","module": "pytest","args": ["-v", "${file}"],"justMyCode": false
}

✅ 以调试模式运行 pytest 单元测试,支持断点调试。


4️⃣ 调试深度学习训练脚本(带 GPU 和环境变量)

{"name": "Python: 调试训练脚本","type": "debugpy","request": "launch","program": "${workspaceFolder}/train.py","console": "integratedTerminal","justMyCode": false,"args": ["--epochs", "10","--batch-size", "32"],"env": {"CUDA_VISIBLE_DEVICES": "0","PYTHONPATH": "${workspaceFolder}"},"envFile": "${workspaceFolder}/.env","subProcess": true,"cwd": "${workspaceFolder}"
}

✅ 适用于多进程、GPU 计算等复杂场景。


📝 六、.env 文件示例

如果你希望将敏感信息或大量环境变量放在外部文件中,可以创建 .env 文件:

CUDA_VISIBLE_DEVICES=0
PYTHONPATH=/home/user/project
API_KEY=my_secret_key

然后在 launch.json 中引用它:

"envFile": "${workspaceFolder}/.env"

🧪 七、如何创建和编辑 launch.json

步骤如下:

  1. 打开你的项目文件夹。
  2. .vscode/ 目录下创建或编辑 launch.json
  3. 将上述配置复制进去,并根据你的实际路径、参数进行修改。
  4. 在左侧点击“运行和调试”图标,选择对应的调试配置,点击绿色 ▶️ 开始调试。

🧠 八、小贴士

  • 虚拟环境支持:确保 VS Code 使用了正确的 Python 解释器(右下角显示)。
  • 路径变量
    • ${workspaceFolder}:当前工作区根目录。
    • ${file}:当前打开的文件。
  • 调试 Django 项目:启用 "DjangoDebugging" 可获得更好的兼容性。
  • 多配置共存:你可以同时配置多个任务(如训练、测试、Jupyter 调试),方便切换。

📚 九、参考文献

  • VS Code Debugging 官方文档
  • Python 调试官方文档

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

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

相关文章

使用浏览器inspect调试wx小程序

edge://inspect/#devices调试wx小程序 背景: 在开发混合项目的过程中,常常需要在app环境排查问题,接口可以使用fiddler等工具来抓包,但是js错误就不好抓包了,这里介绍一种调试工具-浏览器。 调试过程 首先电脑打开edg…

【论文阅读】-《Simple Black-box Adversarial Attacks》

简单黑盒对抗攻击 Chuan Guo Jacob R. Gardner Yurong You Andrew Gordon Wilson Kilian Q. Weinberger 摘要 我们提出了一种在黑盒(black-box)场景下构建对抗样本(adversarial images)的极其简单的方法。与白盒(…

基于ASP.NET+SQL Server实现(Web)企业进销存管理系统

企业进销存管理系统的设计和实现一、摘要进销存管理是现代企业生产经营中的重要环节,是完成企业资源配置的重要管理工作,对企业生产经营效率的最大化发挥着重要作用。本文以我国中小企业的进销存管理为研究对象,描述了企业进销存管理系统从需…

(LeetCode 面试经典 150 题 ) 15. 三数之和 (排序+双指针)

题目:15. 三数之和 思路:排序双指针,时间复杂度0(n^2nlogn)。 先将数组nums升序排序,方便去重和使用双指针。第一层for循环来枚举第一位数,后面使用双指针来找到第二个、第三个数即可,细节看注释。 C版本…

easy-springdoc

介绍 简化springdoc的使用&#xff08;可以搭配knife4j-openapi3-jakarta-spring-boot-starter一起使用&#xff09; maven引用 <dependency><groupId>io.github.xiaoyudeguang</groupId><artifactId>easy-springdoc</artifactId><version>…

配置nodejs,若依

1.配置node.js环境 Node.js — Download Node.js 1.下载好一路下一步&#xff0c;可以安装到d盘 装完之后执行 npm -v 显示版本号即安装成功 2.安装好后新建两个文件夹&#xff0c;node_cache和node_global 3.配置环境变量 新建变量 在path里编辑变量 4.配置用户变量 5.…

Python学习之路(十二)-开发和优化处理大数据量接口

文章目录一、接口设计原则二、性能优化策略1. 数据库优化2. 缓存机制3. 并发模型三、内存管理技巧1. 内存优化实践2. 避免内存泄漏四、接口测试与监控1. 性能测试2. 日志与监控3. 错误处理与限流五、代码示例&#xff08;Flask 流式处理&#xff09;六、部署建议一、接口设计原…

【实时Linux实战系列】实时数据流的网络传输

在实时系统中&#xff0c;数据流的实时传输是许多应用场景的核心需求之一。无论是工业自动化中的传感器数据、金融交易中的高频数据&#xff0c;还是多媒体应用中的视频流&#xff0c;都需要在严格的时间约束内完成数据的传输。实时数据流的传输不仅要求高吞吐量&#xff0c;还…

C#数组(一维数组、多维数组、交错数组、参数数组)

在 C# 中&#xff0c;数组是一种用于存储固定大小的相同类型元素的集合。数组可以包含值类型、引用类型或对象类型的元素&#xff0c;并且在内存中是连续存储的。以下是关于 C# 数组的详细介绍&#xff1a;1. 一维数组声明与初始化// 声明数组 int[] numbers; // 声…

Dify离线安装包-集成全部插件、模板和依赖组件,方便安可内网使用

项目介绍 Dify一键离线安装包&#xff0c;集成安装了全部插件、模板&#xff0c;并集成了dify全部插件所需的依赖组件。方便你在内网、安可环境等离线状态下使用。 Dify是一个开源的LLM应用开发平台。其直观的界面结合了AI工作流、RAG管道、Agent、模型管理、可观测性功能等&…

面试150 翻转二叉树

思路 采用先序遍历&#xff0c;可以通过新建根节点node&#xff0c;将原来root的右子树连到去node的左子树中&#xff0c;root的左子树连到去node的右子树中。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): …

C++-linux系统编程 3.gcc编译工具

GCC编译工具链完全指南 GCC&#xff08;GNU Compiler Collection&#xff09;是Linux系统下最常用的编译器套件&#xff0c;支持C、C、Objective-C等多种编程语言。本章将深入讲解GCC的编译流程、常用选项及项目实战技巧。 一、GCC编译的四个核心阶段 GCC编译一个程序需要经过四…

uView UI 组件大全

uView UI 是一个基于 uni-app 的高质量 UI 组件库&#xff0c;提供丰富的跨平台组件&#xff08;支持 H5、小程序、App 等&#xff09;。以下是其核心组件的分类大全及功能说明&#xff0c;结合最新版本&#xff08;1.2.10&#xff09;整理&#xff1a; &#x1f4e6; 一、基础…

QWidget 和 QML 的本质和使用上的区别

QWidget 和 QML 是 Qt 框架中两种不同的 UI 开发技术&#xff0c;它们在底层实现、设计理念和使用场景上有显著区别。以下是它们的本质和主要差异&#xff1a;1. 本质区别特性QWidgetQML (Qt Modeling Language)技术基础基于 C 的面向对象控件库基于声明式语言&#xff08;类似…

中转模型服务的风险

最近发现一些 AI 相关帖子下&#xff0c;存在低质 claude code 中转的小广告。 其中转的基本原理就是 claude code 允许自己提供 API endpoint 和 key&#xff0c;可以使用任意一个 OpenAI API 兼容的供应商&#xff0c;就这么简单。 进一点 claude token&#xff0c;再混入一点…

前端Vue.js面试题(3)

✨✨✨目录 1.v-model的原理是什么样的&#xff1f; 2.Vue的生命周期&#xff1f; 3.Vue子组件和父组件执行顺序&#xff1f; 4.created和mounted的区别&#xff1f; 5.vue中&#xff0c;推荐在哪个生命周期发起请求&#xff1f; 6.keep-alive中的生命周期有哪些&#xf…

leetcode:HJ18 识别有效的IP地址和掩码并进行分类统计[华为机考][字符串]

学习要点 bitset<8>ostringstreamstoistring.findstring.substr 题目链接 识别有效的IP地址和掩码并进行分类统计_牛客题霸_牛客网 题目描述 解法 #include <iostream> #include <bits/stdc.h> #include <sstream> #include <string> #inclu…

JavaEE Tomcat

企业开发介绍 JavaEE 规范 JavaEE规范是J2EE规范的新名称,早期被称为 J2EE 规范,其全称是 Java 2 Platform Enterprise Edition,是由 SUN 公司领导、各厂家共同制定并得到广泛认可的工业标准(JCP 组织成员)。 其中,JCP 组织(官网)的全称是 Java Community Process,…

什么是神经网络,常用的神经网络,如何训练一个神经网络

神经网络&#xff1a;是深度学习的核心技术。模仿生物神经元工作方式的计算模型&#xff0c;由大量互相连接是神经元组成&#xff0c;通过数据学习复杂的模式和关系。1、神经网络基本组成&#xff1a;神经元、层、连接神经元神经网络的最小单元。每个神经元接受输入&#xff0c…

BigFoot Decursive 2.7.28 2025.07.11

插件显示为独立插件&#xff0c;之前是团队框架自带 BigFoot Decursive lua-CSDN博客 /decursive 命令打开插件 /DCRSHOW 打开设置列表 然后优先列表里面再点【p】添加&#xff0c;你要驱散得优先职业 一键驱散lua插件下载&#xff1a; https://download.csdn.net/downloa…