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
英文地址,請注明出處:http://en.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…