VSCode + CMake + MinGW 在 Windows 下的简易调试指南
VSCode + CMake + MinGW 在 Windows 下的简易调试指南
鉴于网络上关于VSCode的调试的教程不多,并且掺杂着大量的随机爬取内容、过时教程等无用信息。现于此记录自己编译使用 VSCode的 过程,用于自身备忘,及经验分享。
准备工作
下载VSCode
参考链接: https://code.visualstudio.com/

下载CMake
参考链接: https://cmake.org/download/
直接下载自己电脑对应版本的Binary distributions(二进制分发包,即可执行文件),比如作者使用的是 Windows X64 的系统,所以下载的是 Windows X64 的包。
其中的.msi文件是镜像安装文件,类似于安装包。而.zip文件就是包含可执行文件的压缩包。

安装后目录如下:

进入 ./bin 文件夹中,如下图,cmake.exe 是命令行工具,cmake-gui.exe 是界面工具。若使用压缩包的朋友,记得将该文件夹 (./bin) 加入系统环境变量,便于以后的命令行编译。也可以把 cmake-gui.exe 用快捷方式固定到桌面便于后续使用。

下载MinGW
参考链接: https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/
不需要最新版本MinGW的朋友看这里: 可以下载官方链接这里的包,解压缩后就是完整的8.1.0版本的 MinGW。之后同样将 ./bin 文件夹加入系统环境变量后即可完成此步。
需要新版本的朋友可以在此处 github 仓库内下载最新的 MinGW64 二进制分发包, 此处建议下载命名如 x86_64-14.2.0-release-posix-seh-ucrt-rt_v12-rev1.7z 的包。

待编译源码
-RootDir
|- CMakeLists.txt
|- src
|- main.cpp
|- hello_world.h
|- hello_world.cpp
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(Test)
# 加入 -g 编译标识, 生成gdb使用的调试信息
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
add_library(HelloWorld src/hello_world.h src/hello_world.cpp)
add_executable(Main src/main.cpp)
target_link_libraries(Main HelloWorld)
main.cpp
#include "hello_world.h"
int main() {
test::PrintHelloWorld();
return 0;
}
hello_world.h
// Copyright (c) 2025 Keaton
#ifndef SRC_HELLO_WORLD_H_
#define SRC_HELLO_WORLD_H_
namespace test {
bool PrintHelloWorld();
} // namespace test
#endif // SRC_HELLO_WORLD_H_
hello_world.cpp
#include "hello_world.h"
#include <iostream>
namespace test {
bool PrintHelloWorld() {
std::cout << "Hello World." << std::endl;
return true;
}
} // namespace test
VSCode调试
打开 VSCode, 将代码根目录文件夹加入工作区,并在该目录下新建 build 文件夹。最终文件结构如下:

task.json 配置
ctrl + shift + P 打开 VSCode 命令行,输入 Tasks: Configure Task,回车执行。 然后任意选择一个模板,回车执行。这时会在文件夹中生成 .vscode 文件夹, 及文件夹内的 task.json 文件。


再配置 task.json 文件如下:

{
"version": "2.0.0",
"options": {
"cwd": "${workspaceFolder}/build" // 命令工作目录
// ${workspaceFolder} 为当前链接文件夹的工作区根目录
// 此处即为 D://02
},
"tasks": [
{
"label": "CMake", // cmake 构建
"type": "shell",
"command": "cmake",
"args": [
"-S",
"${workspaceFolder}", // 源码目录 ( CMakeLists.txt 所在目录)
"-B",
"${workspaceFolder}/build", // 工程构建目录
"-G",
"Unix Makefiles" // 指明使用 Makefiles 编译
]
},
{
"label": "Make", // make 编译
"type": "shell",
"command": "make",
"args": []
},
{
"label": "Build", // 组合上面两个模块为一个过程
"dependsOn":[
"CMake",
"Make"
]
}
]
}
launch.json 配置
ctrl + shift + P 打开 VSCode 命令行,输入 Debug: Add Configuration, 回车执行。 然后选择 C++: GDB/LLDB 用于调试,回车执行。


这时会在 .vscode 文件夹中生成 launch.json 文件。

此时重复执行 Debug: Add Configuration 命令,选择 C/C++: 启动(gdb) 将在该文件中增加一套执行模板。

将 launch.json 配置如下:

{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Test",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/Main.exe", // 待调试的程序目录
"args": [], // 程序输入参数
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\Workspace\\MinGW\\mingw64\\bin/gdb.exe", // gdb.exe 目录
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "Build" // 启动前,执行 task.json 中的 Build 流程
}
]
}
开始调试
在需要加入断点的代码行点击 F9 或者左键点击该行行号左侧增加断点。

点击 F5 运行程序。

好了,现在大家可以开始大力调试代码了。

浙公网安备 33010602011771号