VSCode对C++程序的多文件程序编译和调试,终端调试和Cmake调试法

VSCode对C++程序的多文件程序编译和调试

前言

最近在使用vscode进行C++的学习,发现编译多文件程序的时候通过F5(运行——启动调试)无法编译出可执行.exe文件,于是在进行了学习和尝试,目前可以编译和调试多文件程序了,参考视频

下文提到的cmake配置文件,大家如果需要可以去上面参考视频的博主的公众号"VSCode"回复cpp获取

程序

前提

vscode已经配置好mingw文件

单文件

本程序比较简单,是一个交换两个参数的程序

#include<iostream>
using namespace std;
void swap(int &a,int &b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;

}
int main(int argc,char **argv)
{

    int val1=10;
    int val2=20;
    cout<<"before swap"<<endl;
    cout<<"val1="<<val1<<endl;
    cout<<"val2="<<val2<<endl;
    cout<<"after swap"<<endl;
    swap(val1,val2);
    cout<<"val1="<<val1<<endl;
    cout<<"val2="<<val2<<endl;
    return 0;  
}

在这里插入图片描述
目前没有配置.json文件,先采用终端调试法用命令行,进行一下可执行文件的生成
命令行:
g++(编译器)
-g(生成可调式信息)
./main.cpp(需要编译的文件名和位置)
-o(为生成可执行文件命名)
kk(生成的可执行文件的名称)
./kk.exe 执行可执行文件
在这里插入图片描述
在这里插入图片描述

终端调试法

把上面的main.cpp修改成多文件模式

修改后的程序

swap.h

void swap(int &a,int &b);

swap.cpp

#include"swap.h"
void swap(int &a,int &b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;

}

main.cpp

#include<iostream>
#include"swap.h"
using namespace std;
int main(int argc,char **argv)
{

    int val1=10;
    int val2=20;
    cout<<"before swap"<<endl;
    cout<<"val1="<<val1<<endl;
    cout<<"val2="<<val2<<endl;
    cout<<"after swap"<<endl;
    swap(val1,val2);
    cout<<"val1="<<val1<<endl;
    cout<<"val2="<<val2<<endl;
    return 0;
    
}

在这里插入图片描述

生成可执行文件

在这里插入图片描述
在这里插入图片描述
mytest.exe是可执行也可调试的文件,调试需要.json文件
点击运行,下图红框
在这里插入图片描述
点击运行和调试后选择:
C++(GDB/LLDB)
g++.exe——生成和调试活动文件

这个时候会显示错误,系统会给你配置一些.json文件,我们需要对这些.json文件进行修改才能进行调试
在这里插入图片描述
如下图进行修改
在这里插入图片描述
在这里插入图片描述
再按F5就可进行调试和运行了,但是目前的执行不能生成外部的执行窗口,
把launch.json进行如下修改就可以了 false改成true,再main.cpp下按F5就可以执行mytest.exe程序了,或者打断点也可进行调试
在这里插入图片描述

Cmake调试法

配置cmake文件

将文件路径配置到环境变量中
在这里插入图片描述
在这里插入图片描述
打开控制面板——系统与安全——系统——高级系统设置
在这里插入图片描述
只需要修改用户变量就可以了
在这里插入图片描述
编辑——新建,把上面的cmake文件下的bin文件路径添加到环境变量中,添加好了后就按确定——确定——确定
在这里插入图片描述

在vscode中安装Cmake工具和Cmake tools工具

在这里插入图片描述
现在准备工作就做好了

写CMakesLists.txt文件

CMakeLists.txt文件名不能写错,一定得是这个!!!
在这里插入图片描述
MYwork是一个随便命名的工程名(我目前还没有发现在哪里使用)
Cmake_swap是我们通过这种方法将会生成的可执行文件名
写好CMakeLists.txt文件后按ctrl+shift+p键
选择CMake configure
选择GCC8.2.0(可能版本不一样,差不多就是选一个gcc的编译器在这里插入图片描述
)
然后生成了一个build文件夹
在这里插入图片描述
目前还没有生成我们的Cmake_swap.exe可执行文件的
然后通过终端进入build文件夹
然后输入 cmake …(cmake空格两点 这里显示成3点了)
在这里插入图片描述
然后输入windows下的make应用程序 mingw32-make.exe
在这里插入图片描述
然后你会发现在build目录下生成了我们的可执行文件Cmake_swap.exe
在这里插入图片描述
调试这个可执行文件,需要修改launch.json文件
在这里插入图片描述
然后在main函数下按F5可进行exe文件执行,如果需要窗口暂停需要在main函数 中的return 0前加system(“pause”);加了之后要重新在终端执行一下cmake的程序mingw32-make.exe更新一下Cmake_swap.exe文件
在这里插入图片描述
我太啰嗦了!!因为希望后面我自己忘了的时候能够看懂,所以写的很详细啦
给一个

  • 14
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VSCode 中使用 CMake 进行调试,可以按照以下步骤进行: 1. 安装 CMake Tools 扩展 首先需要在 VSCode 中安装 CMake Tools 扩展,该扩展提供了与 CMake 的集成和工具链支持。可以在扩展商店中搜索“CMake Tools”进行安装。 2. 配置 launch.json 文件VSCode 中,需要配置一个 launch.json 文件来指定调试器和调试目标。可以通过单击 VSCode 左侧的调试图标,然后选择“创建 launch.json 文件”来创建该文件。 在 launch.json 文件中,需要指定以下信息: - “type”字段:指定调试器类型,可以选择 GDB 或 LLDB。 - “program”字段:指定要调试的可执行文件的路径。 - “args”字段:指定可执行文件的命令行参数。 - “cwd”字段:指定可执行文件的工作目录。 以下是一个示例 launch.json 文件: ```json { "version": "0.2.0", "configurations": [ { "name": "Debug", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/app", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}/build", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb" } ] } ``` 3. 配置 CMakeLists.txt 文件CMakeLists.txt 文件中,需要添加以下内容: ```cmake set(CMAKE_BUILD_TYPE Debug) ``` 该代码将生成调试版本的可执行文件。 4. 使用 CMake Tools 编译和运行 在 VSCode 中,可以使用 CMake Tools 扩展来编译和运行代码。首先需要打开 CMake 工具面板,可以通过单击 VSCode 底部状态栏的“CMake”按钮来打开。 在 CMake 工具面板中,可以选择生成目录并配置项目。然后可以使用“Build”按钮来编译代码,使用“Run”按钮来运行可执行文件。 5. 启动调试 在运行可执行文件之前,需要在 VSCode 中启动调试。可以单击 VSCode 左侧的调试图标,然后选择配置文件并单击“启动调试”按钮来启动调试。 在调试期间,可以使用调试器的功能来单步执行代码、设置断点、查看变量的值等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值