首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Visual Studio Code中C++编译与调试配置

Visual Studio Code中C++编译与调试配置

原创
作者头像
麦克马
发布2025-05-08 11:16:21
发布2025-05-08 11:16:21
1.1K0
举报
文章被收录于专栏:C/C++C/C++

一、前言

在 Visual Studio Code 中,launch.json 和 tasks.json 作为两个重要的配置文件,能够帮助开发者实现调试和任务运行的自动化配置,所以理解这两个配置文件的作用和其内容含义尤为重要。这两个配置文件一般位于项目根目录的 .vscode 文件夹下。

注:本文中以 c++ 的配置为例,其它语言请参考其他文章。

二、launch.json

launch.json 文件是 Visual Studio Code 中用于配置调试会话的文件。它定义了调试器如何启动和运行程序。主要用于在调试会话中启动程序、附加到正在运行的程序等。

2.1 主要功能和用途

  • 启动调试会话:配置调试器如何启动程序。
  • 附加调试:配置调试器如何附加到正在运行的程序。
  • 设置断点和观察点:调试过程中设置断点和观察点。

以下是 launch.json 文件的详细配置说明,包括常见的属性及其用途。

  • type: 调试器类型,如 python, cppdbg, node, java 等。
  • request: 调试请求类型,通常为 launch(启动)或 attach(附加)。
  • name: 配置名称,用户可以在调试配置列表中看到。
  • program: 要调试的程序路径或文件。
  • args: 传递给程序的命令行参数。
  • cwd: 当前工作目录。
  • env: 环境变量设置。
  • sourceMaps: 是否启用源映射(通常用于 JavaScript 调试)。
  • preLaunchTask: 调试前要执行的任务(通常用于编译等)。
  • postDebugTask: 调试结束后要执行的任务。
  • stopOnEntry: 是否在程序入口处停止。
  • console: 控制台类型,如 integratedTerminal, externalTerminal 或 * internalConsole。
  • justMyCode: 是否只调试用户代码(用于 Python)。

2.2 示例

代码语言:json
复制
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "C++ Debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/xxx.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build"
        }
    ]
}

三、tasks.json

用于配置和管理各种任务,例如编译代码、运行脚本、构建项目等。它定义了一些可以自动执行的任务,主要用于自动化构建、测试和其他开发流程。

3.1 主要功能和用途

  • 编译代码:如编译 C++ 或 Java 代码。
  • 运行脚本:如执行 Python 或 Shell 脚本。
  • 构建项目:如使用构建工具(Make、Gradle、Maven)构建项目。
  • 其他任务:如清理生成文件、打包等。

主要属性:

  • label: 任务的名称或标签。
  • type: 任务类型,例如 shell 或 process。
  • command: 要执行的命令。
  • args: 传递给命令的参数。
  • group: 任务分组,可以设置为 build 或 test。
  • presentation: 控制任务输出的呈现方式。
  • problemMatcher: 配置错误和警告的匹配器。
  • options: 任务执行的选项,例如环境变量、当前工作目录等。

3.2 示例

代码语言:json
复制
{
    "version": "0.2.0",
    "tasks": [
        {
            "label": "build", // 与 launch.json中的 preLaunchTask保持一致
            "type": "shell"
            "command": "g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}.out"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"]
        }
    ]
}

四、两者区别

  • 用途:
    • tasks.json:用于配置和管理自动化任务(如编译、构建、运行脚本等)。
    • launch.json:用于配置调试器,定义调试会话的启动和运行参数。
  • 配置内容:
    • tasks.json:定义要执行的任务及其参数和选项。
    • launch.json:定义调试会话的参数和选项,包括要调试的程序、调试器类型、启动或附加模式等。
  • 工作流:
    • tasks.json:适用于日常开发中的重复任务,自动化构建和测试流程。
    • launch.json:适用于调试代码,启动调试会话或附加到正在运行的程序。

在实际过程中,两者一般是配合使用的。例如上面两个示例中,在 launch.json 中指定 preLaunchTask 为 build,即 tasks.json 中 label 指定的任务。这样,当你启动调试会话时,VS Code 会先执行 tasks.json 中定义的编译任务,然后再启动调试。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、launch.json
    • 2.1 主要功能和用途
    • 2.2 示例
  • 三、tasks.json
    • 3.1 主要功能和用途
    • 3.2 示例
  • 四、两者区别
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档