VSCode配置C++的Debug环境

一、安装vscode及必要插件 对于C++安装如下插件就可以

 二 、创建项目

创建一个简单的项目,目录结构如下:

Gun.h:

#pragma once
#include <iostream>

class Gun
{
public:
    Gun(std::string type);
    void AddBullet(int bullet_num);
    bool Shoot();

private:
    int bullet_count_;
    std::string type_;
};

Gun.cpp

#include "Gun.h"

Gun::Gun(std::string type):type_(type),bullet_count_(0)
{

}

void Gun::AddBullet(int bullet_num)
{
    bullet_count_ += bullet_num;
    std::cout << "子弹数:" << bullet_count_ << std::endl;
}

bool Gun::Shoot()
{
    if(bullet_count_<=0)
    {
        std::cout << "There is no bullet!" << std::endl;
        return false;
    }

    --bullet_count_;
    std::cout << "shoot successfully" << std::endl;
    std::cout << "子弹数:" << bullet_count_ << std::endl;
    return true;
}

Solider.h:

#pragma once

#include<iostream>
#include<memory>
#include<string>
#include"Gun.h"

class Solider
{
public:
    Solider(std::string name);
    void AddGun(std::shared_ptr<Gun> gun);
    void addBulletToGun(int num);
    bool fire();

private:
    std::string name_;
    int a = 2;
    std::shared_ptr<Gun> gun_ptr_;
};

Solider.cpp:

#include"Soldier.h"

Solider::Solider(std::string name):name_(name)
{
    
}


void Solider::AddGun(std::shared_ptr<Gun> gun)
{
    gun_ptr_ = gun;
}

void Solider::addBulletToGun(int num)
{
    gun_ptr_->AddBullet(num);
}
bool Solider::fire()
{
    return gun_ptr_->Shoot();
}

main.cpp:

#include"Soldier.h"
#include "Gun.h"
#include<iostream>
using namespace std;
void test()
{
    Solider sanduo("xusanduo");
    sanduo.AddGun(std::make_shared<Gun>("AK47"));
    sanduo.addBulletToGun(20);
    sanduo.fire();
}
int main()
{
    //workspaceFolder
    test();
    return 0;
}

CMakeLists.txt:   都添加了必要的注释

#指定cmake最小版本
cmake_minimum_required(VERSION 3.0)
#项目名称  ${PROJECT_NAME}就是表示自己设置的war
project(war)

#c++标准11编译
set(CMAKE_CXX_STANDARD 11)
#假如没有找到11标准就会报错,可以不写
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
#set设置输出所有警告  "${CMAKE_CXX_FLAGS} -Wall" 这个参数表示在原本的CMAKE_CXX_FLAGS后边再加上 -Wall,相当于追加的效果;  
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
#设置为调试模式  这个一定要加
set(CMAKE_BUILD_TYPE Debug) 
#包含头文件的路径    ${CMAKE_SOURCE_DIR}这个表示CMakeLists.txt所在的目录
include_directories(${CMAKE_SOURCE_DIR}/include)
#参数GLOB_RECURSE表示递归寻找,将src目录下所有的.cpp文件 都使用SRCS表示
file(GLOB_RECURSE SRCS "src/*.cpp")

#添加可执行文件   main.cpp 和SRCS
add_executable(${PROJECT_NAME} main.cpp ${SRCS})

三 、编译项目:

mkdir build
cd build
cmake ..
make

编译完成,并执行代码,代码没问题,正确运行。

\documentclass{article}
\begin{document}
\section{主标题}
\subsection{副标题}
\subsubsection{次级副标题}
\end{document}
 

四、配置launch.jason文件:

1、点击右上角齿轮,如下所示:

2、会出现如下选项,我们是c++项目,所以选择第二个g++ :

会自动创建launch.jason,如下所示:

 3、设置可执行文件路径:

修改如下所示:

同时要把调试会话前要开始运行的任务注释调,位置如下所示:

五、开始调试:

在程序任意位置打断点,按F5,进入调试模式,如下所示:

这样就完成了。

参考来源:【Linux 之基于VSCode和CMake实现C/C++开发与调试 环境配置 GDB 多文件开发】 https://www.bilibili.com/video/BV1fy4y1b7TC/?share_source=copy_web

 

### 配置 VSCodeC++ Debug 环境 #### 插件安装 为了在 VSCode 中实现高效的 C++ 调试环境,需先安装必要的扩展插件。推荐的插件包括 `C/C++` 和 `CodeLLDB` 或者 `C/C++ Clang Command Adapter`[^1]。 - **C/C++**: 提供 IntelliSense 功能以及代码导航支持。 - **CodeLLDB**: 基于 LLDB 的调试工具,适用于 macOS 和 Linux 平台。 - **C/C++ Clang Command Adapter**: 另一种调试适配器选项,适合特定需求场景下的开发者。 这些插件可以通过 VSCode 扩展市场直接搜索并完成安装。 --- #### 文件配置说明 VSCodeC++ 调试环境主要依赖以下几个核心文件: 1. **tasks.json** 该文件定义了构建任务,用于指定编译命令及其参数。以下是基于 g++ 编译器的一个典型例子: ```json { "version": "2.0.0", "tasks": [ { "label": "build hello world", "type": "shell", "command": "g++", "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"] } ] } ``` 上述配置会通过 `-g` 参数生成带调试信息的目标文件[^4]。 2. **launch.json** 这个文件描述了启动调试会话所需的设置。下面是一个针对本地运行和调试的例子: ```json { "version": "0.2.0", "configurations": [ { "name": "(lldb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/a.out", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "lldb" } ] } ``` 如果是在 WSL 下工作,则可能需要调整某些路径或者切换到 GDB 模式[^2]。 3. **c_cpp_properties.json** 此文件用来设定头文件查找路径以及其他与 IntelliSense 相关的信息。例如: ```json { "configurations": [ { "name": "Mac", "includePath": [ "/usr/include", "/usr/local/include" ], "defines": [], "compilerPath": "/usr/bin/gcc", "intelliSenseMode": "clang-x64", "browse": { "path": [ "/usr/include", "/usr/local/include" ], "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" } } ], "version": 4 } ``` 对应不同操作系统时,请修改对应的 include 路径及 compilerPath 属性值[^3]。 --- #### STL 数据可视化处理 默认情况下,在调试过程中查看 STL 容器可能会显示为内存地址而非实际内容。解决这一问题通常涉及更新 GCC 版本至较新版本 (>=7.x),因为新版编译器提供了更好的调试支持特性。 另外也可以尝试自定义 `.gdbinit` 文件加载额外脚本来增强数据展示效果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值