VSCode + CMake 编译调试

2021年9月5日 6点热度 0条评论 来源: Jons伯恩特

一、要进行VSCode的调试首先需要先安装CMake和VSCode,在这就不在进行描述了,可以自行百度安装,一般都是傻瓜式的安装linux和windows类似,我的是在Ubuntu下,安装效果如下图:

二、安装VSCode的插件,可以自行按照我提供的截图的方式安装

三、开始第一个工程。

创建目录,并将CMakeLists.txt和main.cpp放到该目录下,如图:创建CStart目录,并将CMakeLists.txt和main.cpp放到该目录下。

CMakeList.txt 内容,具体CMakeLists.txt编写可以自行找其他资料参考。

cmake_minimum_required (VERSION 2.8) #最低要求的CMake版本
project(CStart) # 项目名称
file(GLOB SRC_FILE *.cpp) # 建立变量SRC_FILE为目录下.c文件列表
add_executable (${PROJECT_NAME} ${SRC_FILE}) # 要求编译可执行文件
add_definitions("-Wall -g")

Main.cpp内容: 

#include <stdio.h>
int main(int argc, char ** argv) {
    int i;
    for (i=0; i < argc; i++)
        printf("Argument %d is %s\n", i, argv[i]);
    return 0;
}

四、真正开始了,首先编译:可以再如下图VSCode点击cmake默认配置,也可以使用CMake的图像话界面编译配置,也可以手动创建build目录,

然后cmake ..

然后 make 

 

五、最重要的一步就是利用VSCode调试。

点击产生launch.json

配置launch.json

launch.json 解释

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
            "type": "cppdbg", // 配置类型,这里只能为cppdbg
            "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
            "program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
            "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
            "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,我一般设置为true
            "cwd": "${workspaceFolder}", // 调试程序时的工作目录
            "environment": [], // (环境变量?)
            "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
            "internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
            "MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但目前lldb在windows下没有预编译好的版本。
            "miDebuggerPath": "gdb", // 调试器路径,Windows下后缀不能省略,Linux下则去掉
            "setupCommands": [ // 用处未知,模板如此
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ],
            "preLaunchTask": "Compile" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
        }
    ]
}

默认只需要修改一个地方就行了,如果有参数可以修改下面的args参数:

 

整体文件结构如下图,没有tasks.json:

 

如果出现如下提示:(检查对应的路径或者可执行文件是否存在)

 

六、最终调试运行效果如下:

    原文作者:Jons伯恩特
    原文地址: https://blog.csdn.net/huangyifei_1111/article/details/108850986
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。