Vscode编译调试C++程序

2023-05-16

一、简介

本文讲述在windows平台下在Vscode中使用g++编译本地C++程序,并使用gdb调试的方法。可能有些朋友会说:windows上不是已经有visual studio这个最强IDE了吗,为什么还要用Vscode调试?是的,确实没错,单纯用Vscode编译调试本地程序确实没什么用。但是用它来远程调试linux程序就很有用了。试想一下这么一个场景:你的linux服务器/linux应用程序部署在客户现场,客户的电脑配置和环境跟你开发用的电脑不一样,客户电脑中没有也不能安装IDE。这时候他们那边出现了你开发过程中没有遇到的bug。老板叫你到那边出差调试,但你不想去,你想:如果这个时候你可以在本机(公司开发的电脑)上远程调试客户电脑上的程序,那该多好啊。没错,在博主的另一篇文章《VsCode + gdb + gdbserver远程调试C++程序》讲述了远程调试的方法。而本篇文章则相当于该文章的前置学习文章,可以让大家更了解Vscode的使用。

二、安装插件和其它依赖

首先在Vscode中安装如下插件:

C/C++

C/C++ Extension Pack

Code Runner

在​ ​​​​​​https://jmeubank.github.io/tdm-gcc/

下载一个最新的gcc

安装gcc后,在cmd中执行命令:gcc -v。如果看到有如下输出,则表明gcc安装成功了。

三、创建项目

在Windows中新建文件夹(比如Test1A),新建main.cpp作为测试用的例子

在main.cpp中增加内容如下:

#include <stdio.h>

int main()
{
    printf("hello world\n");
    getchar();
    return 0;
}

在Vscode中:文件 -> 打开文件夹。打开上述文件夹Test1A

然后可以看到刚刚创建的文件夹和文件都已经被添加进来了。

四、编译运行项目

然后我们还得改Vscode设置,否则编译运行时会出现问题。文件 -> 首选项 -> 设置 -> 用户 -> 扩展 -> Run Code Configuration,把里面的Run In Terminal 选项勾上

 

完成上述操作后,重启Vscode。鼠标右键单机Vscode的代码编辑区,在出现的右键菜单中,点击“Run Code”

然后我们可以看到在项目目录下生成了main.exe。

在Vscode的终端中可以看到输出了我们代码中的内容(下图中的"4"是为了让代码中的getchar()能执行下去)

注意:在Vscode中编译C++程序是有局限性的,而且经常会导致各种各样的问题,所以我们一般在cmd或者linux的终端中通过命令行或者makefile编译好程序,再通过Vscode调试。

五、通过GDB调试程序

运行 -> 启动调试。选择C++(GDB/LLDB)-> g++.exe

可以看到执行上述操作后生成了launch.json

我们得对里面的一些配置(主要就是下面的三个参数)进行修改。为了避免出错,都改成绝对路径。其中:

program:调试入口文件的地址

cwd:程序启动调试的目录

miDebuggerPath:调试器的路径

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "D:\\Demo\\test\\gdb\\Test1A\\main.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "D:\\Demo\\test\\gdb\\Test1A",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\SoftWare\\TDM-GCC-64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++.exe 生成活动文件"
        }
    ]
}

在main.cpp中设置断点,重新按F5

可以看到可以调试了

注意:如果设置断点后,调试出现报错:Module containing this breakpoint has not yet loaded or the breakpoint address not be obtained。 

则要手动在控制台中添加-g选项编译程序(这也是在Vscode中编译C++程序的局限性之一)

六、参考

《windows 10上使用vscode编译运行和调试C/C++》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vscode编译调试C++程序 的相关文章

  • 轻松使用 Debian的Linux

    Spiral Linux 就是这样一种发行版 xff0c 它源于 Debian 它的重点在于促进简单性并为最终用户提供开箱即用的特性和功能 如果您是开源操作系统的新手 xff0c 并且想熟悉一个易于使用的 Linux 发行版 xff0c 那
  • 手残也不该敲的命令

    Linux命令是一种很有趣且有用的东西 xff0c 但在你不知道会带来什么后果的时候 xff0c 它又会显得非常危险 所以 xff0c 在输入某些命令前 xff0c 请多多检查再敲回车 rm rf rm rf是删除文件夹和里面附带内容的一种
  • Linux 基金会宣布成立 TLA+ 语言基金会

    Linux 基金会宣布成立 TLA 43 基金会 TLAF xff0c 以促进 TLA 43 编程语言及其 TLA 43 从业者社区的采用和发展 TLA 43 基金会的创始成员包括 AWS 甲骨文和微软 TLA 43 Temporal Lo
  • Linux的这七大认识误区,你千万别有!

    本文罗列了大家对Linux的七大认识误区 xff0c 看看其中那个是你也出现过的 千万别让这些先入为主的观点断送了你体验新事物的机会 Linux的受众群体并不大 对还是错 错 xff01 大错而特错 我承认 xff0c Linux的实际用户
  • oracle隔离级别深究追根

    oracle数据库 xff0c 只有两种隔离级别 xff1a read committed和serializable 简单的说 xff0c read committed是语句级隔离 xff0c serializable是事务级隔离 xff0
  • Solus Linux 改变发展方向

    Solus 是一个独立开发的 Linux 发行版 xff0c 它的一大特色就是 Solus 自创的 Budgie 桌面环境 xff08 最新的 Fedora 也已经新增了这个桌面环境 xff09 xff0c 当然用户也可以选择其他常见的 G
  • uptime 命令介绍

    Linux 小白 xff0c 若对系统管理有兴趣 xff0c 或想成为资深用户 xff0c 就需要对命令行有扎实的功底 你需要知道很多命令 xff0c 其中一个就是 uptime 文本我们会通过一些容易理解的案例来讲解一下这个命令的基本用法
  • 解决CentOS添加新网卡后找不到网卡配置文件

    使用VMware Workstation虚拟机安装好CentOS7虚拟机后 xff0c 添加网卡后CentOS 7无网卡配置文件的问题 xff0c 添加第二块网卡以后 xff0c 进入CentOS 7系统后 xff0c 看不到网卡配置文件
  • 详解将FTP映射至Windows

    在经常使用ftp传输文件的环境中 xff0c 每次上传和下载文件都需要重新连接然后登录是非常繁琐的一件事情 我们可以将FTP空间映射到本地磁盘空间 xff0c 免去输入地址以及账号 密码 方便我们日常中文件的上传和下载 1 双机桌面上的我的
  • Secure Boot什么意思?BIOS中Secure Boot灰色无法更改解决方法详解

    在电脑Bios设置中 xff0c 有一项 Secure Boot 相关设置 xff0c 很多朋友不知道Secure Boot什么意思 xff0c 也不知道该如何设置 下面本文就来谈谈Secure Boot设置相关的知识 xff0c 需要的朋
  • centos7 RAID磁盘阵列卡驱动安装图文教程

    解决方案 本方案可以支持centos7版本 UEFI模式 选择 Install CentOS Linux 7 xff0c 然后按 e 键 选择添加 linux dd xff0c 然后按 Ctrl 43 x 启动 进入如下图 虚拟光驱弹出系统
  • ubuntu 12.04 配置Ralink corp. RT3290 Wireless 802.11n 1T/1R PCIe无线网卡

    03 00 0 Network controller Ralink corp RT3290 Wireless 802 11n 1T 1R PCIe Subsystem Hewlett Packard Company Device 18ec
  • badblocks检查磁盘坏道

    参 数 功 能 s 显示检查进度 v 运行时显示详细的处理信息 w 做写入检测 root 64 localhost badblocks s dev sda2 Checking for bad blocks read only test do
  • 自协商(802.3)原理浅析

    题注 xff1a 在阅读过网上关于自协商的介绍文章 xff0c 在此针对阅读中遇到的疑问进行简单记录和分析 xff01 Q1 网络通信链路空闲时 xff0c 链路上固定发送检测脉冲的是TX 43 xff0c TX xff0c RX 43 x
  • ubuntu安装时姓名、计算机名、用户名的含义

    如有问题 xff0c 请加扣扣群 xff1a 460189483 ubuntu安装时 xff0c 最后一步是设置姓名 计算机名 用户名 xff0c 那么这些名字是什么意思 xff1f 之后又有什么作用呢 xff1f 下面来详解一下 安装最后
  • PB关于数据窗口内字段值改变问题

    1 在创建DW时 xff0c 如果使用select办法 xff0c 并且只查询一张表的话 xff0c PB默认自动提供修改其值 xff0c 程序运行后 xff0c 可以在DW控件内直接修改字段值 xff0c 当然如果要保存数据的话 xff0
  • 我的2016——培训、工作,回首大学

    我是一名计算机专业的本科生 xff0c 2016年7月到12月期间 xff0c 参加专业技能培训学习 在此期间接触一些其他高校的学生 xff0c 我和他们接触期间 xff0c 结合实际情况 xff0c 有以下感想 xff1a 1 在大学期间
  • ADSL Server出错解决一例(战神攻击)

    ADSL Server出现如下大量提示 var log messages Mar 19 16 36 43 ADSLserver kernel ll header ff ff ff ff ff ff 00 48 54 5b 0d 3f 08
  • uboot sf 命令用法

    转自 xff1a https blog csdn net kickxxx article details 56012456 uboot中如果支持spi qspi flash 那么可以使用sf的erase read write命令操作spi
  • 灰度共生(共现)矩阵的求法

    前段时间在写关于图像的作业时 xff0c 出现了灰度共生矩阵的求法问题 于是就上网查资料发现不是很理想 xff0c 翻书查阅也是不同的书籍出现的解法也是不一样 xff0c 上别的课时老师也给我们讲了下 xff0c 但是发现与我所看到的资料上

随机推荐

  • Qt调试问题记录(持续更新)

    目录 前言调试平台调试记录configure报C 43 43 11缺失g 43 43 编译选项不支持 前言 本人调试Qt所遇到的问题均会记录在此 xff0c 方便回溯 调试平台 Qt版本 xff1a 5 12 11Host PC xff1a
  • websocket autobahn jar包的用法

    autobahn 0 5 0 jar 文件的地址 xff1a http pan baidu com s 1slQYcKP 使用websocket好简单方便 xff0c 据一天来我们公司的大神说 xff1a websocket是封装好的成熟的
  • Linux中vnc的配置端口号的修改

    vnc的默认端口是自己配置的 xff0c 并不是这有一个端口号 通过打开 etc sysconfig vncservers 这里就配置了2个桌面 xff0c 一个桌面号是1 xff0c 一个是2 这里的配置的参数 VNCSERVERS 61
  • oracle的sql查询分析函数-高级部分-分析函授over()子句

    oracle的分析函数 xff0c 应该是有一个格式的 function argu1 argu2 over partition by order by windowing clause 这是一个完整的分析函数的格式 我之前用的分析函数 xf
  • 使用docker搭建鸿蒙开发环境

    第一步下载docker https docs docker com engine install windows 版本https desktop docker com win stable amd64 Docker 20Desktop 20
  • 数组

    一 数组中重复的数字 题目描述 xff1a 在一个长度为n的数组里的所有数字都在0到n 1的范围内 数组中某些数字是重复的 xff0c 但不知道有几个数字是重复的 也不知道每个数字重复几次 请找出数组中任意一个重复的数字 例如 xff0c
  • JSON序列化与反序列化

    一 需要序列化的POJO和初始化代码 以下3种类库的使用均使用下面这个POJO public class User public User private String id private String name private Stri
  • 排序

    一 数据流中的中位数 题目描述 xff1a 如何得到一个数据流中的中位数 xff1f 如果从数据流中读出奇数个数值 xff0c 那么中位数就是所有数值排序之后位于中间的数值 如果从数据流中读出偶数个数值 xff0c 那么中位数就是所有数值排
  • 常用的shell语句

    看文件里第几行 看倒数5行 tail n 5 SpecialVariable sh 看正数3行到最后一行 tail n 43 3 SpecialVariable sh 查看磁盘空间大小 df h 查看内存空间大小 top n 1 xff08
  • 【转载】SLAM技术 即将颠覆哪些领域

    什么是SLAM xff1f 机器人在未知环境中 xff0c 要实现智能化需要完成三个任务 xff0c 第一个是定位 xff08 Localization xff0c 第二个是建图 Mapping xff0c 第三个则是随后的路径规划 Nav
  • SIFT学习笔记(结合matlab源码)

    源码下载地址 xff1a https download csdn net download u014509577 11011793 一 算法流程 1 生成高斯金字塔 xff0c 并由此生成差分高斯金字塔 xff08 DoG xff09 xf
  • 点到面的配准算法

    学习一下PCL中点到面的配准算法 笔记一下以免以后忘记 好记性不如烂笔头 嘻嘻 一 理论基础 1 估计表面法向量问题 xff1d 对点集的K最近邻点的协方差矩阵求特征值和特征向量 xff08 PCA xff09 问题 2 假设三维点集中的任
  • GICP学习笔记

    首先贴一下原始论文的下载地址 xff1a http www roboticsproceedings org rss05 p21 pdf 下面开始论文学习笔记 1 ICP算法 标准ICP算法的关键概念可归纳为两个步骤 xff1a 计算两次扫描
  • python求解中位数、均值、众数

    首先定义一个数据 xff0c 在这里我假定为 xff1a num 61 2 3 2 5 1 0 1 2 9 一 求中位数 中位数 xff08 又称中值 xff0c 英语 xff1a Median xff09 xff0c 统计学中的专有名词
  • 获取占用率大于70%的硬盘.java

    获取占用率大于70 的硬盘 xff0c 准备写入oracle过程 xff0c 在占比大于90 时 xff0c 向指定邮箱发送邮件 import java io File import java text DecimalFormat publ
  • 使用KNN方法进行MNIST数据集分类

    声明 xff1a 本文的代码部分可以戳这里下载 一 MNIST数据集 MNIST是深度学习的经典入门demo xff0c 他是由6万张训练图片和1万张测试图片构成的 xff0c 每张图片都是28 28大小 xff08 如下图 xff09 x
  • python遍历整个文件夹中的所有.txt文件并将绝对路径保存在指定的txt文档中

    在深度学习处理数据时经常会用到的一步操作 xff0c 路径名因人而异 xff0c 可以根据需求自行更改 import os get txt document rootdir 61 os path join 39 要读取的txt文件的绝对路径
  • PointNet的点云分割实验

    PointNet属于直接对点云数据进行语义分割的开山之作 xff0c 优点就不一一细说了 xff0c 直接上代码来说明跑代码的过程以及过程中遇到的问题 笔者不才 xff0c 欢迎斧正 xff01 实验的代码可以在这里下载 xff1a htt
  • 图表组件FusionCharts介绍及免费下载地址

    FusionCharts套件帮助你创建令人惊叹的 图表控件 xff0c 仪表 xff0c 并在瞬间映射在你的所有网站和企业应用 使用它 xff0c 你可以建立漂亮的仪表板 xff0c 报告 xff0c 分析 xff0c 监测 xff0c 调
  • Vscode编译调试C++程序

    一 简介 本文讲述在windows平台下在Vscode中使用g 43 43 编译本地C 43 43 程序 xff0c 并使用gdb调试的方法 可能有些朋友会说 xff1a windows上不是已经有visual studio这个最强IDE了