vscode LAUNCH.JSON
时间: 2025-04-29 20:44:49 浏览: 17
### 配置 VSCode 中的 `launch.json` 文件
#### 理解 `launch.json`
`launch.json` 是 Visual Studio Code (VSCode) 的调试配置文件,用于定义启动程序的方式以及设置断点和其他调试选项。通过此文件可以指定要运行的应用程序、传递给应用程序的参数以及其他重要的调试信息。
对于 C/C++ 项目,在 `.vscode/launch.json` 文件中通常会有一个或多个配置项来支持不同的调试场景。下面是一个适用于 g++ 编译器编译后的 .cpp 文件并执行其生成的目标文件的例子[^2]:
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/filename.exe", // 或者 ${workspaceFolder}/filename.out 取决于操作系统和构建命令
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb", // 如果使用 Windows, 则可能是 mingw64 gdb 路径
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build" // 这里应该对应 tasks.json 中的任务名称
}
]
}
```
上述 JSON 片段展示了如何创建一个新的调试配置,其中包含了指向已编译二进制文件的位置 (`${workspaceFolder}/filename.exe`) 和其他必要的调试参数。特别注意 `"preLaunchTask"` 字段,它指定了在启动之前应先执行哪个任务;这通常是用来调用另一个名为 `tasks.json` 的文件里的某个特定任务来进行源码到目标代码的转换过程。
为了使这个流程更加顺畅,还需要确保项目的根目录下存在一个有效的 `tasks.json` 来处理实际的编译工作。该文件负责将源代码转化为可执行文件,并且可以在每次尝试运行时自动触发这一操作。
#### 关键字段解释
- **version**: 定义了当前使用的版本号。
- **configurations[]**: 数组形式存储着一系列可能被选用的不同类型的调试环境设定。
- **name**: 显示在这个配置旁边的名字,方便识别不同用途下的配置条目。
- **type**: 表明所选的语言服务扩展名(例如 cppdbg 对应C/C++)。
- **request**: 设置请求类型为 launch 即表示直接启动应用进行调试。
- **program**: 指定待调试程序的具体路径。
- **args[]**: 向程序传入命令行参数列表。
- **stopAtEntry**: 是否暂停在入口处等待进一步指令,默认不勾选。
- **cwd**: 工作区的工作目录位置。
- **environment[]**: 自定义环境变量集合。
- **externalConsole**: 控制台窗口是否独立显示外部控制台。
- **MIMode & miDebuggerPath**: 设定 GDB/MIDebugger 的模式及其绝对路径。
- **setupCommands[]**: 发送至GDB的一系列初始化命令。
- **preLaunchTask**: 执行前预先完成的任务名字,一般关联至 `tasks.json`.
#### 创建 `tasks.json`
为了让整个开发体验更完善,建议同时维护好同属`.vscode` 文件夹内的 `tasks.json` ,以便能够顺利地实现从编写代码直至最终测试之间的自动化衔接。以下是针对 C++ 语言的一个简单例子:
```json
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": ["$gcc"],
"detail": "Generated task to build the current file."
}
]
}
```
这段脚本实现了当用户保存修改过的 CPP 文件之后便能立即对其进行重新编译的功能,从而简化了日常编码过程中频繁切换 IDE 内部界面的操作步骤。
阅读全文
相关推荐


















