vscode基于cmake结果调试运行

news/2024/7/16 8:05:27 标签: vscode, ide, 编辑器

 Linux环境使用VSCode调试简单C++代码_linux vscode编译c++代码_果壳中的robot的博客-CSDN博客

Linux环境下使用VScode调试CMake工程 - 知乎

1 vscode实现cmake+make指令 

我们都知道,对于cmake构建的工程,编译需要以下步骤:

cd build
cmake ..
make

那如何让vscode来帮我们执行呢?答案就是构建下面的task.json文件。构建步骤为:

* 在VSCode的主菜单中,选择 Terminal>Configure Default Build Task

* 选择 "CMake: build"

* 将生成一个 tasks.json文件,将其中的内容作相应的替换: 

可以看出,上面的 tasks.json 文件主要包含三个命令:

  • label为cmake的任务:执行shell类型的cmake命令,其参数为 ../,执行时所在的目录为${fileDirname}/build。这个命令等价于在build目录下执行cmake ../
  • label为make的任务:执行shell类型的make命令,没有参数,执行时所在的目录为${fileDirname}/build。这个命令等价于在build目录下执行make
  • label为build的任务:该任务由cmake和make任务组成,也就是将上面两条命令执行的过程组合成一个build任务。
// tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "cmake",
            "type": "shell",
            "command": "cmake",
            "args": [
                ".."
            ],
            "options": {
                "cwd": "${workspaceFolder}/yolov8/build"
            },            
        },
        {
            "label": "make",
            "type": "shell",
            "command": "make",
            "args": [],
            "options": {
                "cwd": "${workspaceFolder}/yolov8/build"
            }, 
        },
        {
            "label": "build",
			// 依赖于上述的两个 label为 cmake和 make的任务
            "dependsOn":["cmake", "make"]
        },
    ],
}

2 vscode实现debug run

我们都知道,对于cmake构建的工程,编译需要以下步骤:

1. 在VSCode的上方菜单中,选择 Run -> Add Configuration,会生成一个空白的launch.json文件

2. 我们要做的就是在该文件中告诉VSCode:用gdb调试前面生成的可执行文件,在launch.json文件中添加如下内容:

launch.json

//json.sh
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/yolov8/build/app_yolov8",
            "args": [ ],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}/yolov8/build",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "Set Disassembly Flavor to Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],

            "preLaunchTask": "build",
            "miDebuggerPath": "/usr/bin/gdb"
        }

    ]
}

其中,

  • "program":用于指定要调试的可执行文件,这里用变量名指代,其值就是helloCMake
  • "args":执行代码时,需要添加的命令行参数
  • prelaunchTask:在执行gdb调试前,预先需要执行的任务,这里设置为"build",就是指定上一节中配置完成的build任务,即在gdb调试前,先执行cmake和make

打上断点,然后按F5,即可实现代码调试


http://www.niftyadmin.cn/n/5167303.html

相关文章

某环保制造企业核心人才培养项目成功案例纪实

——如何培养核心人才,使企业持续保持竞争力 【客户行业】环保行业 【问题类型】人才培养 【客户背景】 某环保有限公司成立于2002年,位于南方某二线城市,是一家以处理废弃物、废旧资源为主的设备制造的民营企业,拥有从事专业…

element-Cascader级联选择器用法?

html <el-form-item label"行业选择" :label-width"formLabelWidth"><div class"m-4"><el-cascader v-model"form.tradeid" :options"options" :props"props" /></div></el-form-ite…

某设计院后备人才管理体系建设项目成功案例纪实

——落实后备人才管理体系&#xff0c;提高企业市场竞争力 【客户行业】电力电网 【问题类型】人才梯队建设 【客户背景及现状分析】 某电力设计院是一家从事输变电工程勘察、设计、咨询的专业公司&#xff0c;至今成立已有20多年。目前拥有国家住建部、发改委核准的工程设计…

IntelliJ Idea 撤回git已经push的操作

最初的样子 现在的样子 解决方案 第一步&#xff0c;commit到本地撤回&#xff1a; 打开提交历史记录&#xff0c;选中回退的版本右键&#xff0c;点击“Reset Current Branch to Here…”,然后选中“Mixed”&#xff0c;点击Reset后&#xff0c;之前commit的代码会在本地显…

PHP网站源码 知识付费分站代理自助下单系统 自带多款模板

源码测评&#xff1a;功能很齐全&#xff0c;有可以对接的总站&#xff0c;应该是对接好就可以推广赚钱了&#xff0c;但是这种感觉能赚钱的就那么几个人&#xff0c;见仁见智吧&#xff01; 截图演示&#xff1a; 转载自 https://www.qnziyw.cn/cmsmb/qtcms/3952.html

在gitlab中的使用kaniko打造流水线

文章目录 kaniko工具介绍环境说明系统版本组件版本组件部署参考链接 部署harbor下载解压、创建相关目录配置部署 gitlab集成harbor集成项目ci配置最终结果 kaniko工具介绍 kaniko 是一种从容器或 Kubernetes 集群内的 Dockerfile 构建容器镜像的工具。 kaniko 解决了使用 Doc…

线性代数(四)| 解方程 齐次性 非齐次性 扩充问题

文章目录 1 方程解的个数2 解方程步骤2.1 齐次性方程组2.2 非齐次方程组 3 一些扩充问题 系数矩阵 增广矩阵 A m n X B A_{mn}XB Amn​XB 1 方程解的个数 m 代表有m个方程 n代表有n个未知数 系数矩阵的秩与增广矩阵的秩不同 无解 若相同 &#xff0c;如系数矩阵的秩和未知…

ant design pro of vue怎么使用阿里iconfont

一 使用离线iconfont 首先需要生成图所有图标对应的js文件。如下图所示&#xff0c;将生成的js代码复制&#xff0c;在项目中创建一个js文件&#xff0c;将代码粘贴进去。这里我将js文件放在了src/assets/iconfont下面 然后&#xff0c;在main.js中引入文件&#xff0c;并进…