自用Vscode 配置c++ debug环境

前言

使用vscode配置c++ debug环境的好处

1、可以借助vscode方便轻量的扩展和功能

2、避免了传统使用gdb 复杂按键以及不够直观的可视化

3、方便一次运行,断点处查看变量,降低找bug难度

4、某大公司项目采用类似配置,经过实践检验

配置c++运行环境

MSVC在Windows下编译c/c++

**gcc, g++**分别是GNU的c & c++编译器,在Linux下面用。

cmake的输入是CMakeLists.txt(描述编译过程),输出是makefile。build过程的输入是makefile,输出结果是可执行文件,build的过程会调用编译器和连接器来完成整个过程。

qmake用来build qt工程。

MINGW包含gcc和一系列工具,是windows下的gnu环境,让开发者在windows下可以写gnu的c/c++代码, 编译的结果是windows的可执行文件exe,PE格式的,在windows下运行。

可以自行搜索不同环境的配置方式

配置VSCODE

下载扩展

配置项目

首先我们创建使用Vscode打开项目工程区

然后在该工程下创建如下文件

也就是说当调试一个多文件c++项目时,将使用launch.json进行调试,其依赖于preLaunchTask定义的build任务。

这个任务通过cmake 和make进行构建。参考链接1给出了更加详细的介绍

而如果只是简单调试单文件可以略去task.json的配置,参考链接2给出了更加详细的介绍
launch.json

cpp 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - Build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/xxxxxx",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

tasks.json

cpp 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "cmake",
            "type": "shell",
            "command": "cmake",
            "args": [
                "-B",
                "build"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            }
        },
        {
            "label": "make",
            "type": "shell",
            "command": "cmake",
            "args": [
                "--build",
                "build"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            }
        },
        {
            "label": "build",
            "dependsOn": [
                "cmake",
                "make"
            ]
        }
    ],
}

最后一键F5 即可进行断点调试了

参考资料

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

https://blog.csdn.net/qq_42417071/article/details/137438374

相关推荐
czy878747538 分钟前
深入了解 C++ 中的 `std::bind` 函数
开发语言·c++
我在人间贩卖青春1 小时前
C++之继承的方式
c++·private·public·protected·继承方式
智者知已应修善业2 小时前
【洛谷P9975奶牛被病毒传染最少数量推导,导出多样例】2025-2-26
c语言·c++·经验分享·笔记·算法·推荐算法
Trouvaille ~2 小时前
【Linux】应用层协议设计实战(一):自定义协议与网络计算器
linux·运维·服务器·网络·c++·http·应用层协议
CSCN新手听安2 小时前
【linux】高级IO,I/O多路转接之poll,接口和原理讲解,poll版本的TCP服务器
linux·运维·服务器·c++·计算机网络·高级io·poll
CSCN新手听安2 小时前
【linux】网络基础(三)TCP服务端网络版本计算器的优化,Json的使用,服务器守护进程化daemon,重谈OSI七层模型
linux·服务器·网络·c++·tcp/ip·json
m0_736919102 小时前
C++中的委托构造函数
开发语言·c++·算法
小小小小王王王2 小时前
洛谷-P1886 【模板】单调队列 / 滑动窗口
c++·算法
历程里程碑3 小时前
Linux 库
java·linux·运维·服务器·数据结构·c++·算法
Sheep Shaun3 小时前
如何让一个进程诞生、工作、终止并等待回收?——探索Linux进程控制与Shell的诞生
linux·服务器·数据结构·c++·算法·shell·进程控制