vscode+cmake+MinGW-GDB调试配置

我愿意化蝶在你肩上落
守住你不经意间的执着
–《化蝶》

1、背景

VSCode的task.json对于整个工程的编译配置十分不方便,比方说我要调用opencv库,我就得写一堆-L来链接库文件,实际上这些工作cmake早就集成好了。但是我又想在vscode里面调试文件,那么如何结合CMake和gdb来进行调试呢?闲话少说,直接上代码:

2、task.json

{
    "tasks": [
        {
            "type": "cmake",
            "label": "CMake: build",
            "command": "build",
            "targets": [
                "ALL_BUILD"
            ],
            "group": "build",
            "problemMatcher": [],
            "detail": "CMake template build task"
        }
    ],
    "version": "2.0.0"
}

这个文件的作用就是,定义一个前置流程CMake: build,只要点击调试调用gdb调试的时候,会先执行这个,也就是文件里面定义的cmake编译。当然啊,你CMake的生成器设置一定要设置成MinGW Makefiles,可不要是vs studio,不然就贻笑大方了,不过想必查这个问题的读者应该不会有这样的错误。
vs输出为:

build task started....
E:\program-tools\cmake\bin\cmake.EXE --build e:/program/c++/txcl-final/build --config Debug --target all -j 18 --
[ 50%] Building CXX object CMakeFiles/test2.dir/matchtemple.cpp.obj
[100%] Linking CXX executable test2.exe
[100%] Built target test2
build finished successfully.

3、launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "gdb",
            "preLaunchTask": "CMake: build",//调试前执行的任务,就是之前配置的tasks.json中的label字段
            "type": "cppdbg",//配置类型,只能为cppdbg
            "request": "launch",//请求配置类型,可以为launch(启动)或attach(附加)
            "program": "${workspaceFolder}\\build\\test2.exe",//调试程序的路径名称,这个Debugger需要自己创建,为了方便放置生成的exe文件
            "args": [],//调试传递参数
            "stopAtEntry": true, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
            "cwd": "${workspaceFolder}",  // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
            "environment": [
            ],
            "externalConsole": false,//true显示外置的控制台窗口,false显示内置终端
            "MIMode": "gdb",
            "miDebuggerPath": "E:/lib/MinGW/mingw-posix/x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0/mingw64/bin/gdb.exe",// 调试器路径,Windows下后缀不能省略,Linux下则不要
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ]
        }
    ]
}

说明:1、preLaunchTask务必和task.json里的label一样,这个label就像配置的函数名一样,以供调用。
2、program标签就是你可执行文件的路径,这里其实可以换成cmake插件提供的环境变量,但是我忘了,读者有兴趣可以查一下
3、miDebuggerPath是gdb路径,也就是你MinGW的bin路径

我遇到的坑:如果你vscode中gdb调试启动之后窗口红了一下就闪退,并且没有错误提示,使用以下方法:
1、检查环境变量里面有没有其他的MinGW(装conda的时候会自动安装一个MinGW并且添加进环境变量里面,有conda环境的同学可以注意一下),如果有多个MinGW,请保证你编译工程使用的MinGW在环境变量列表中的最上面,否则调用的版本不对会导致无法启动调试,即使你在控制台里面可以启动gdb。
2、如果不是上面的问题,尝试直接在文件资源管理器,也就是文件夹里面双击鼠标执行可执行文件,看看有没有报错,我之前是因为运行找不到dll文件导致启动调试不成功,但是这个问题gdb和vscode是不会弹窗告诉你的,而是直接闪退,这一点真的很垃圾,所以需要你手动双击找到问题所在。

<think>好的,用户想了解如何在VS Code中配置CMake和LLDB。首先,我需要确认用户的操作系统,因为步骤可能有所不同。不过一般来说,VS Code配置在Windows、macOS和Linux上大同小异,但某些细节比如安装依赖可能不同。这里假设用户使用的是macOS或Linux,因为LLDB在macOS上是默认的,而Windows可能需要额外配置。 接下来,用户需要安装必要的软件:VS Code本身、CMake、LLDB以及可能的编译器。对于macOS,可以用Homebrew安装CMake和LLDB,而Linux则用包管理器,比如apt。Windows可能需要安装MinGW或者MSVC工具链。 然后,VS Code的扩展部分,必须安装CMake Tools和C/C++扩展。可能还需要CodeLLDB扩展,尤其是如果用户想在Windows上使用LLDB的话,因为Windows默认的调试器是GDB的替代。 配置CMake的话,用户需要在项目根目录创建CMakeLists.txt,这是CMake的基础。然后通过CMake Tools扩展来配置生成和构建。可能需要指定生成器,比如Ninja或者Unix Makefiles,这会影响构建速度。 调试配置方面,使用LLDB需要创建launch.json文件,指定program路径,可能需要设置miDebuggerPath指向LLDB的可执行文件。另外,调试器的设置可能因平台而异,比如macOS可能需要代码签名,而Linux则可能需要权限调整。 可能遇到的问题包括路径错误、编译器未找到、调试符号缺失等。需要提醒用户检查CMake输出的路径是否正确,确认编译选项是否包含-g以生成调试信息,以及确保LLDB的版本兼容性。 另外,用户可能希望优化配置,比如使用Ninja作为生成器,或者配置CMake变量如CMAKE_BUILD_TYPE为Debug。这些都可以在settings.json或者CMake的用户配置中设置。 最后,测试整个流程:构建项目,设置断点,启动调试。如果出现问题,查看终端输出和调试控制台的错误信息,逐步排查配置错误。 总结步骤:安装软件和扩展→配置CMake→设置调试→测试→问题处理。需要分步骤详细说明,确保用户能逐步操作,避免遗漏关键点。</think>在 Visual Studio Code 中配置 CMake + LLDB 的完整流程如下(以 macOS/Linux 为例): --- ### 一、准备工作 1. 安装必要软件: ```bash # macOS brew install cmake lldb # Ubuntu/Debian sudo apt install cmake lldb g++ ``` 2. 安装 VS Code 扩展: - CMake Tools (ms-vscode.cmake-tools) - C/C++ (ms-vscode.cpptools) - CodeLLDB (vadimcn.vscode-lldb) --- ### 二、配置 CMake 1. 创建项目结构: ``` my_project/ ├── CMakeLists.txt └── src/ └── main.cpp ``` 2. 示例 CMakeLists.txt: ```cmake cmake_minimum_required(VERSION 3.10) project(MyProject) set(CMAKE_CXX_STANDARD 17) add_executable(${PROJECT_NAME} src/main.cpp ) ``` 3. 配置生成器(推荐使用 Ninja): ```json // .vscode/settings.json { "cmake.generator": "Ninja", "cmake.buildDirectory": "${workspaceFolder}/build" } ``` --- ### 三、配置 LLDB 调试 1. 创建调试配置: ```json // .vscode/launch.json { "version": "0.2.0", "configurations": [ { "name": "(lldb) Debug", "type": "lldb", "request": "launch", "program": "${workspaceFolder}/build/MyProject", "args": [], "cwd": "${workspaceFolder}", "preLaunchTask": "cmake: build" } ] } ``` --- ### 四、工作流程 1. 配置 CMake- 按 `Ctrl+Shift+P` ➔ `CMake: Configure` 2. 构建项目: - 按 `F7` 或底部状态栏的 `Build` 按钮 3. 启动调试- 设置断点后按 `F5` --- ### 五、常见问题处理 1. **找不到调试目标**: - 确认 `program` 路径与 CMake 输出路径一致 - 检查可执行文件是否具有执行权限 2. **调试符号缺失**: ```cmake # 在 CMakeLists.txt 中添加 add_compile_options(-g) ``` 3. **LLDB 版本问题**: ```bash # 查看当前 LLDB 版本 lldb --version ``` --- ### 六、高级配置(可选) ```json // .vscode/settings.json { "cmake.configureSettings": { "CMAKE_BUILD_TYPE": "Debug" }, "lldb.library": "/usr/lib/liblldb.dylib" // macOS 路径示例 } ``` --- 通过以上配置,您将获得: - 完整的 CMake 项目支持 - 快速的 Ninja 构建系统 - LLDB 的现代调试功能(内存检查、反汇编等) - 集成化的代码提示和调试体验 建议通过 `Ctrl+Shift+P` ➔ `CMake: Delete Cache and Reconfigure` 命令解决大部分配置异常问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值