Ubuntu下使用VS code对CMake进行调试

0、 前置步骤:

工具及环境:Ubuntu18.04、g++/gcc编译器、gdb调试器以及VS code中的CMake、CMake Tools插件。

1、前期设置

1.1 指定并编译需要调试的可执行文件

点击VS code左侧竖栏CMake的标志(CMake源文件查看器),可配置/生成所有项目。

Ctrl + Shift + P输入Set Build Target,选择CMake:Set Build Target,选择需要生成的目标可执行程序。

之后输入Set Debug Target,选择CMake:Set Debug Target,选择需要Debug的可执行程序。

执行完这些命令后,可以在 CMake 源文件查看器中看到指定的目标文件多了两个图标如下所示。

其中锤子表示是 build target;火箭表示是 debug target。设置完成后,按 F7 即可开始编译。

2、配置 launch.json 文件(若程序不需要从外部传递参数,可以跳过这一步)

点击“运行和调试”按钮(Ctrl + Shift + D),点击 “创建 launch.json 文件”,选择“C/C++(gdb)启动”。(注:如果没有这个选项,可以简单粗暴地在.vscode文件夹下新建launch.json文件)。

该文件有以下内容:(自己创建的可以将下方内容复制)

{
    "version": "0.2.0",
    "configurations": []
}

将光标移动到 “configurations:” 后的[]内,点击右下角的 “添加配置”,或键盘按下 Ctrl+空格,选择 “C/C++(gdb) 启动 ”。执行完成后 launch.json 文件的内容如下 (这和在前一步直接选择 “C/C++(gdb) 启动” 的内容一样),可能需要改的参数主要有:name、program、args、cwd,已经在下面做了注释:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            // 程序在 VSCode 中的名字,一般设置为“项目名-gdb”,如 “run_tum_rgbd-gdb”
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            // 指定可执行文件,需要包括可执行文件所在的目录以及可执行文件的名称。
            //(注:这里的 ${workspaceFolder} 变量为当前打开的文件夹的路径,之后会用到)
            "program": "输入程序名称,例如 ${workspaceFolder}/a.out",
            // 启动时传入 main 函数的参数,每个参数须用双引号引起来,两个参数间需要用逗号隔开
            "args": [],
            "stopAtEntry": false,
            // current work directory 的缩写。这个为程序运行的目录。
            //(注:这里的 ${fileDirname} 是断点所在源文件的目录。一般在调试大型项目时用不到)
            "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
                }
            ]
        }

    ]
}

我的这四个参数设置如下:

"name": "run_tum_rgbd-gdb",
"program": "${workspaceFolder}/bin/run_tum_rgbd",
"args": ["files=/media/andyvictory/AndyVictory/Dataset/TUM/RGBD/rgbd_dataset_freiburg2_desk",
                 "calib=/media/andyvictory/AndyVictory/Dataset/TUM/RGBD/rgbd_dataset_freiburg2_desk/calib.txt"]
"cwd": "${workspaceFolder}/build"

3、设置断点,启动调试

使用鼠标在某行的左侧设置断点(或者按F9键)。之后按 F5 即可启动调试(如果跳过了第2步,可能需要按Ctrl + F5)。

可以看到左侧有变量、监视、调用堆栈、断点四个栏目。

  • 变量栏目显示的是当前函数中的各个临时变量,以及各个寄存器的值(一般用不到)

  • 监视栏目可以指定变量,在任何时刻都会显示其的值

  • 调用堆栈栏目显示的是函数的调用关系。每调用一次堆栈就会高一截

  • 断点栏目显示当前程序所有设置的断点位置

4、补充快捷键

  • F5:启动调试。若已经启动,则会运行到下一个断点停住

  • F10:单步跳过。即如果遇到函数,则不会进到这个函数里面

  • F11:单步执行。如果遇到函数,会进到这个函数里面

  • Shift+F11:直接执行完这个函数,返回调用的前一个函数

  • Shift+F5:结束调试

参考视频:https://www.bilibili.com/video/BV1o34y1675i/?spm_id_from=333.788&vd_source=9242f7fde7c792b1d044d78838d398c4

参考文章:https://blog.csdn.net/qq_51303289/article/details/128687710

猜你喜欢

转载自blog.csdn.net/weixin_50578602/article/details/129344536