如何创建launch.json文件:调试配置完全指南
launch.json 是 Visual Studio Code(VS Code)中用于定义调试配置的核心文件,它告诉调试器如何启动你的程序、附加到已运行的进程,以及在调试过程中应该遵循哪些规则,无论是调试 Node.js、Python、C#、Go 还是其他语言项目,正确配置 launch.json 都是高效调试的关键,本文将手把手教你如何创建和配置 launch.json 文件。
为什么需要 launch.json?
launch.json 文件是 VS Code 调试功能的“说明书”,没有它,VS Code 不知道:
- 如何启动你的程序:是直接运行脚本,还是编译后运行可执行文件?
- 传递哪些参数:命令行参数、环境变量等。
- 在哪个文件或行设置断点:调试的入口点是什么?
- 使用哪种调试器:是 Node.js 调试器、Python 调试器,还是其他?
创建 launch.json 文件的两种方法
创建 launch.json 文件非常简单,主要有两种常用方法:
通过 VS Code 调试视图自动生成(推荐)
这是最简单、最常用的方法,尤其适合初学者。
-
打开项目:在 VS Code 中打开你的项目文件夹。
-
进入调试视图:点击活动栏左侧的“运行和调试”图标(通常是一个虫子图标),或者使用快捷键
Ctrl+Shift+D(Windows/Linux)或Cmd+Shift+D(macOS)。 -
创建配置文件:在“运行和调试”视图的顶部,你会看到一个下拉菜单,默认可能显示“无配置”或“添加配置...”,点击这个下拉菜单,然后选择“添加配置...”。
-
选择环境/语言:VS Code 会弹出一个列表,提示你选择要调试的环境(Node.js、Python、Java、C# 等),选择与你项目对应的语言或环境。
-
选择预设配置:选择环境后,VS Code 会提供一些预设的调试配置模板(对于 Node.js,可能有“Node.js: 当前文件”、“Node.js: 附加到进程”等),选择一个最符合你需求的预设。
-
自动生成:选择预设后,VS Code 会在
.vscode文件夹下自动创建一个launch.json文件,并填充好基本的配置内容。.vscode文件夹如果不存在,VS Code 会自动创建。
手动创建和编辑
如果你对配置比较熟悉,或者自动生成的配置不完全满足需求,可以手动创建。
- 创建 .vscode 文件夹:在项目根目录下,创建一个名为
.vscode的文件夹(如果还没有的话)。 - 创建 launch.json 文件:在
.vscode文件夹中,创建一个名为launch.json的文件。 - 编写配置内容:手动编写 JSON 配置内容,你可以参考 VS Code 官方文档或其他项目的
launch.json文件作为模板。
launch.json 文件的核心结构解析
一个典型的 launch.json 文件包含以下部分:
{
// 使用 IntelliSense 了解相关属性,然后悬停以查看描述现有属性的。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "配置名称", // 在调试下拉菜单中显示的名称
"type": "调试器类型", // "node", "python", "cppdbg"
"request": "启动请求类型", // "launch" (启动新进程) 或 "attach" (附加到已存在进程)
"program": "要调试的程序/脚本路径", // "${workspaceFolder}/app.js", "${file}"
"args": [], // 传递给程序的命令行参数数组
"cwd": "工作目录", // 程序运行时的工作目录
"env": {}, // 环境变量键值对
"console": "控制台类型", // "internalConsole", "integratedTerminal", "externalTerminal"
"stopOnEntry": true, // 是否在程序入口处暂停
"sourceMaps": true, // 是否启用源映射 (适用于 TypeScript, CoffeeScript 等)
// 其他特定于调试器的配置...
}
]
}
关键配置项详解:
version: 通常为"0.2.0",表示配置文件的版本。configurations: 一个数组,包含一个或多个调试配置对象,每个对象代表一个独立的调试场景。name: 配置的显示名称,在调试面板的下拉菜单中看到,建议使用有意义的名称,如 "Launch Chrome", "Debug Server"。type: 指定使用的调试器扩展,常见的有:"node": Node.js 调试器"python": Python 调试器 (Pylance, Pylote)"cppdbg": C/C++ 调试器 (GDB/LLDB)"java": Java 调试器 (Extension Pack for Java)"go": Go 调试器"chrome": Chrome 浏览器调试器 (用于调试前端 JavaScript)
request: 调试的请求类型。"launch": 启动一个新的进程进行调试。"attach": 附加到一个已经运行的进程上调试(常用于调试 Web 服务器、Docker 容器内的应用等)。
program: 要调试的程序的入口点路径。"${workspaceFolder}/src/main.js": 相对于工作区根目录的路径。"${file}": 当前打开的文件(适用于单文件调试)。- 对于 Web 项目,可能是一个 HTML 文件,如
"${workspaceFolder}/index.html"。
args: 传递给program的命令行参数数组。"args": ["--port", "8080", "--env", "development"]。cwd: 调试时的工作目录(Current Working Directory),很多程序的行为依赖于当前目录,通常设置为"${workspaceFolder}"。env: 设置环境变量。"env": { "NODE_ENV": "production", "MY_VAR": "hello" }。console: 指定调试输出的控制台。"internalConsole": VS Code 中的调试控制台(输出面板)。"integratedTerminal": VS Code 集成的终端。"externalTerminal": 外部终端(如系统的命令提示符或终端)。
sourceMaps: 对于编译型语言(如 TypeScript、CoffeeScript),设置为true可以让调试器在原始源代码(.ts 文件)中设置断点和单步执行,而不是在编译后的 JavaScript 文件中。preLaunchTask: 在启动调试会话之前执行的任务(定义在.vscode/tasks.json中),常用于在调试前自动编译代码、安装依赖等。
常见场景示例
示例1:调试 Node.js 脚本
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch App",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/app.js", // 你的入口 JS 文件
"cwd": "${workspaceFolder}",
"args": ["--arg1", "value1"], // 可选的命令行参数
"console": "integratedTerminal",
"sourceMaps": true // 如果使用 TypeScript,建议开启
}
]
}
示例2:调试 Python 应用
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}", // 调试当前打开的 Python 文件
"console": "integratedTerminal",
"justMyCode": true // 只调试用户代码,不进入库代码
},
{
"name": "Python: Flask App",
"type": "python",
"request": "launch",
"module": "flask",
"env": {
"FLASK_APP": "app.py",
"FLASK_ENV": "development"
},
"args": [
"run",
"--host=0.0.0.0",
"--port=5000"
],
"jinja": true, // 启用 Jinja 模板调试
"console": "


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