vscode--c++--launch.json&&tasks.json配置---一键自动调试c++项目

当前环境

测试所用环境为wsl2+vscode

前言

首先我们得知道怎么在shell中启动调试

  1. 在编译源文件时设置g++ -g选项,或者是在cmake中设置set(CMAKE_BUILD_TYPE Debug),才能开启调试
  2. 启动gdb,然后在gdb中启动包含调试信息的程序(gdb)./a.out;也可以在gdb中调试已经启动的进程:如果进程的pid是1145,则(gdb) attach 1145
  3. 然后就可以在开始调试了

配置launch.json

在vscode调试也就是通过配置launch.json完成上述过程。相当于一种批处理程序。

  1. 生成launch.json文件。
    点击左上角的运行选项—添加配置—选择c++(GDB/LLDB)启动
    configurations为空再重复一遍,可生成如下的文件
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            //需修改
            "program": "输入程序名称,例如 ${workspaceFolder}/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        }

    ]
}
  1. 修改json文件配置。
  • 将鼠标停在左边的文件名上即可知道左边选项的含义
  • 需要将上述program对应的内容改为编译生成的可执行文件的路径
  • 可能需要添加"miDebuggerPath": "/usr/bin/gdb"
  1. 解释上述配置
  • 如果你的gdb程序不在环境变量中,你需要配置"miDebuggerPath": "/usr/bin/gdb"告诉vscode你的调试器的路径
  • 上述红色部分的内容是告诉vscode包含调试信息的可执行程序在哪(也就是它的路径),在我的项目中的路径为"program": "${workspaceFolder}/build/test/disk_scheduler_test"其中${workspaceFolder}为在 VS Code 中打开的文件夹的路径,下图所示image.png
  • 其他的重要选项
  1. request可将调试模式改为附加,即调试一个运行中的进程
  2. program调试文件的路径,在Windows下可表示为mingw32-make.exe
  3. args启动可调试文件可带才命令行参数
  4. stopAtEntry程序入口是否停止
  5. cwd目标工作目录
  6. environment添加到程序环境的环境变量
  7. externalConsole是否启动控制台
  8. MIMode选择gdb调试或者lldb
  9. miDebuggerPath调试器的路径

vscode官方文档关于选项的配置的说明

F5一键调试–配置tasks.json

现在我们配置好launch.json后,可以F5一键启动调试,但如果修改了源文件之后,就得重新编译。
为了解决这个问题,就得配置tasks.json.

  1. 首先我们的在launch.json文件中添加配置"preLaunchTask": "Build",红字Build是一个标签,依赖于后面的tasks.json中的lable。这样我们在按下F5调试后就会去先去执行依赖的Build任务
  2. ctrl + shift + p输入configuring task,选择默认模版。或者直接在创建.vscode/tasks.json文件
  3. 写出下列代码
{
    "version": "2.0.0",
    "tasks": [
        {
        //红色部分代表我们需要改动的部分
        //选择在哪一个目录中执行这个命令
            "options": {
                "cwd": "${workspaceFolder}/build"
            },
            //这个目录的标签,与launch.json中preLaunchTask所对应
            "label": "Build",
            //执行的命令
            "command": "make",
            //给命令传递的参数
            "args": [
                "disk_scheduler_test"
            ]
        },
    ]
}
  1. 解释上述task.json文件。用cmake构建工程后会生成makefile文件,在makefile文件所在的build/文件夹中执行make disk_scheduler_test就重新编译了我们所改动的文件。解释见上代码块
  2. 如果你需要执行多个命令,可以将tasks.json改为如下形式。以下表示在build目录下,先执行cmake ..

再执行make命令

{
    "version": "2.0.0",
    //表示tasks数组中的任务都在这个目录中执行
    "options": {
        "cwd": "${workspaceFolder}/build/"
    },
    "tasks": [
        {
            "label": "cmake",
            "command": "cmake",
            "args": [
                ".."
            ]
        },
        {
            "label": "make files",
            "command": "make",
            "args":[
            ]
        },
        {
        //与launch.json关联的lable
            "label":"Build",
            //当前命令的执行依赖与下面的所有lable
            //类似于launch.json中的preLaunchTask
            "dependsOn":[
                "cmake",
                "make files"                
            ]
        }
    ]
}

参考

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于C/C++项目的任务(tasks)和调试launch配置,你可以使用Visual Studio Code的tasks.jsonlaunch.json文件进行配置。 首先是配置tasks.json文件,用于定义构建和运行任务。你可以按下面的步骤进行配置: 1. 在Visual Studio Code中打开你的C/C++项目。 2. 在菜单栏中选择“View” -> “Command Palette”(或使用快捷键Ctrl+Shift+P)。 3. 在命令面板中输入“Tasks: Configure Task”,然后选择“Tasks: Configure Task”命令。 4. 选择“Create tasks.json file from template”选项。 5. 从模板列表中选择“Others”(其他)。 6. 选择适合你的构建工具的模板,比如"G++ build and debug active file"(用于G++编译器)。 7. tasks.json文件将在.vscode目录下创建。你可以根据自己的需求修改该文件。 下面是一个tasks.json的示例: ```json { "version": "2.0.0", "tasks": [ { "type": "shell", "label": "build", "command": "g++", "args": ["${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"] }, { "type": "shell", "label": "run", "command": "${fileDirname}/${fileBasenameNoExtension}" } ] } ``` 上述示例定义了两个任务:build(构建)和run(运行)。build任务使用g++编译器将当前文件编译为可执行文件,而run任务则直接运行可执行文件。 接下来是配置launch.json文件,用于定义调试任务。你可以按照以下步骤进行配置: 1. 在Visual Studio Code中打开你的C/C++项目。 2. 在菜单栏中选择“Debug” -> “Add Configuration”。 3. 选择“C++ (GDB/LLDB)”配置类型。 4. launch.json文件将在.vscode目录下创建。你可以根据自己的需求修改该文件。 下面是一个launch.json的示例: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb" } ] } ``` 上述示例定义了一个名为“(gdb) Launch”的调试配置,使用gdb作为调试器。"program"字段指定了要调试的可执行文件路径。 你可以根据自己的需要修改和扩展这些配置。更多关于tasks.jsonlaunch.json配置选项,请参考Visual Studio Code的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值