如何创建launch.json文件:VS Code调试配置全攻略
在Visual Studio Code(VSCode)中进行程序调试时,launch.json文件是必不可少的配置文件,它定义了调试器的启动参数、程序入口、环境变量等关键信息,让调试器能够准确运行并监控你的代码,本文将详细介绍launch.json文件的作用、创建方法、核心配置项及常见场景示例,帮助你快速调试配置技巧。
什么是launch.json文件?
launch.json是VSCode的调试配置文件,位于项目根目录的.vscode文件夹中(需手动创建该文件夹),它以JSON格式存储调试器的启动规则,告诉VSCode:
- 如何启动被调试的程序(如直接运行、通过命令行启动等);
- 程序的入口文件路径(如
main.py、index.js); - 调试时需要传递的参数(如命令行参数、环境变量);
- 是否需要停止在断点、是否附加到已运行的进程等。
launch.json是连接VSCode调试器与你的程序的“桥梁”,没有它,调试功能将无法正常使用。
创建launch.json文件的两种方法
方法1:通过VSCode调试视图自动生成(推荐)
这是最简单、最常用的方法,尤其适合新手,VSCode会根据当前项目类型(如Python、Node.js、C++等)自动生成基础配置模板。
操作步骤:
-
打开项目并进入调试视图
在VSCode中打开你的项目文件夹,点击左侧活动栏的“运行和调试”图标(或按快捷键Ctrl+Shift+D),切换到调试视图。 -
选择配置环境
在调试视图顶部,点击“配置”按钮(下拉框显示“选择配置环境”),VSCode会检测项目中的文件类型(如存在package.json则识别为Node.js项目,存在main.py则识别为Python项目),并列出对应的调试环境选项。Python项目会显示“Python File”;Node.js项目会显示“Node.js:Launch via NPM”;C++项目会显示“C++ (GDB/LLDB)”等。
-
生成默认配置
选择对应环境后,VSCode会自动在项目根目录创建.vscode文件夹,并在其中生成launch.json文件,填充基础配置(如程序路径、调试器类型等),生成后,文件会自动打开,你可以根据需要修改配置。
方法2:手动创建并编写JSON
如果你使用的是VSCode不支持的语言,或需要自定义复杂配置,可以手动创建launch.json文件。
操作步骤:
-
创建.vscode文件夹
在项目根目录下手动创建名为.vscode的文件夹(注意英文小写,无空格)。 -
创建launch.json文件
在.vscode文件夹中创建名为launch.json的文件,确保文件内容符合JSON格式(注意逗号、引号等符号的正确使用)。 -
编写基础配置结构
手动编写JSON时,至少需要包含以下核心字段:{ "version": "0.2.0", // 配置文件版本,固定值 "configurations": [ // 调试配置数组,可定义多个配置 { "name": "Launch Program", // 配置名称(显示在调试下拉框中) "type": "python", // 调试器类型(如python、node、cppdbg等) "request": "launch", // 启动方式(launch:启动新进程;attach:附加到已运行进程) "program": "${file}", // 程序入口文件路径(${file}:当前打开的文件) "console": "integratedTerminal" // 调试终端类型(integratedTerminal:集成终端;externalTerminal:外部终端) } ] }
launch.json核心配置项详解
无论是自动生成还是手动编写,launch.json的配置项都有固定含义,以下是常用配置的说明:
| 配置项 | 类型 | 必填 | 说明 |
|---|---|---|---|
version |
string | 是 | 配置文件版本,固定值"0.2.0" |
configurations |
array | 是 | 调试配置数组,每个元素是一个独立的调试场景 |
name |
string | 是 | 配置名称,显示在调试视图的下拉框中(如“Launch Python”、“Debug JS”) |
type |
string | 是 | 调试器类型,需与项目语言匹配: - python(Python)- node(Node.js)- cppdbg(C++/GDB)- java(Java/JDK)- chrome(Chrome浏览器调试) |
request |
string | 是 | 启动方式: - launch:启动新进程调试(最常用)- attach:附加到已运行的进程(如调试Node.js的子进程) |
program |
string | 否 | 程序入口文件路径 - 常用变量: - ${file}:当前打开的文件- ${workspaceFolder}:项目根目录- ${fileDirname}:当前文件所在目录 |
args |
array | 否 | 程序启动参数(命令行参数),如["--port", "8080", "--debug"] |
cwd |
string | 否 | 程序运行的工作目录,默认${workspaceFolder}(项目根目录) |
env |
object | 否 | 环境变量,如{"NODE_ENV": "development", "PORT": "3000"} |
console |
string | 否 | 调试终端类型: - integratedTerminal:集成终端(VSCode内置终端)- externalTerminal:外部终端(系统弹窗终端)- internalConsole:VSCode调试控制台(输出较小信息时适用) |
stopOnEntry |
boolean | 否 | 是否在程序启动时立即暂停(停在第一行代码),默认false |
sourceMaps |
boolean | 否 | 是否启用source maps(用于调试转译语言,如TypeScript、Vue、React等),默认false |
port |
number | 否 | 调试端口号(如Node.js的调试端口默认为5858) |
常见场景的launch.json配置示例
示例1:Python脚本调试
假设有一个main.py文件,需要传入命令行参数--name=Python,并在集成终端中调试:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Python Script",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/main.py",
"args": ["--name=Python"],
"console": "integratedTerminal",
"stopOnEntry": false
}
]
}
示例2:Node.js项目调试(使用NPM脚本)
假设项目通过npm start启动,且需要设置环境变量NODE_ENV=development:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch via NPM",
"type": "node",
"request": "launch",
"runtimeExecutable": "npm",
"runtimeArgs": ["start"],
"cwd": "${workspaceFolder}",
"env": {"NODE_ENV": "development"},
"console": "integratedTerminal"
}
]
}
示例3:C++程序调试(GDB)
假设有一个hello.cpp文件,编译后生成hello可执行文件,需要在调试时传入参数--test:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug C++ Program",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/hello",
"args": ["--test"],
"cwd": "${workspaceFolder}",
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb" // Linux/macOS下GDB路径,Windows下可省略
}
]
}
示例4:TypeScript项目调试(通过source maps)
假设使用ts-node运行TypeScript文件,需要启用source maps:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug TypeScript",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/src/index.ts",
"runtimeArgs": ["


还没有评论,来说两句吧...