ubuntu 上vscode +cmake的debug调试配置方法

在ubuntu配置pcl点云库以及opencv库的时候,需要在CMakeLists.txt中加入相应的代码。配置完成后,无法调试,与在windows上体验vs studio差别有点大。

找了好多调试debug配置方法,最终能用的有几种,但是有一种特别好用,具体不清楚原理,但是不用配置含路径和库文件路径和文件,简直是让人惊叹。

有人配置c_cpp_properties.json,我没有配置,网上说是这个相当于配置 ++IntelliSense++ 功能,我只配置了 tasks.json 和launch.json文件。

  1. task.json

    {
    "version": "2.0.0",
    "options": {
    "cwd": "${workspaceFolder}/build"
    },
    "tasks": [
    {
    "type": "shell",
    "label": "cmake",
    "command": "cmake",
    "args": [
    ".."
    ]
    },
    {
    "label": "make",
    "group": {
    "kind": "build",
    "isDefault": true
    },
    "command": "make",
    "args": [

    复制代码
             ]
         },
         {
             "label": "Build",
             "dependsOrder": "sequence", // 按列出的顺序执行任务依赖项
             "dependsOn":[
                 "cmake",
                 "make"
             ]
         }
     ]

    }

2.launch.json,其中program要换成自己的可执行文件

复制代码
{
    // 使用 IntelliSense 了解相关属性。
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/devel/lib/litamin2/litamin2_align",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "Build",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

3.要在CMakeLists.txt中加入:

复制代码
set(CMAKE_BUILD_TYPE "Debug")

并去掉优化选项(比如O3优化等),否则会乱跳。

4.调试

点击三角形+爬虫的 符号,进入调试,选择

选择这一个就可以开始编译+调试了。

在这里有一个技巧:如果事先在终端中cmake .. 和make之后,这里调试启动就特别快。

参考:

https://zhuanlan.zhihu.com/p/688006076

相关推荐
egoist20234 分钟前
[linux仓库]线程池(单例模式)、线程安全与重入、死锁[线程·拾]
linux·单例模式·饿汉模式·懒汉模式·线程安全·死锁·重入问题
EverydayJoy^v^9 分钟前
RH134简单知识点——第8章——管理存储堆栈
linux·运维·5g
板面华仔13 分钟前
Linux基础(下)——工作中常用命令总结
linux·运维·服务器
刃神太酷啦14 分钟前
Linux 基础 IO 收官:库的构建与使用、进程地址空间及核心知识点全解----《Hello Linux!》(11)
java·linux·c语言·数据库·c++·算法·php
RisunJan15 分钟前
Linux命令-let(执行算术运算)
linux·服务器
开开心心就好25 分钟前
视频伪装软件,.vsec格式批量伪装播放专用
java·linux·开发语言·网络·python·电脑·php
山有木兮啊33 分钟前
VSCode Remote-SSH 连接Mac卡在初始化VSCode
vscode·macos·ssh
济61735 分钟前
linux 系统移植(第十九期)---- BusyBox 构建根文件系统---- Ubuntu20.04
linux·运维·服务器
阿钱真强道36 分钟前
基于openssl的sm4加密,加密数据,验证OK
linux·网络协议·网络安全
无名修道院37 分钟前
AI大模型应用开发-Linux 入门
linux·运维·人工智能·ai大模型应用开发