一、简介

本文讲述在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++》

Vscode编译调试C++程序相关推荐

  1. vscode怎么写qt项目_使用VSCode 编译调试QT程序

    预备知识 bat文件,或者其他的脚本语法. qmake基本语法,qmake shadow build是啥. vscode 的task,lanch的配置. 前提 各个程序正确安装,即使用QtCreato ...

  2. 【转载】【VSCode】Windows下VSCode编译调试c/c++

    转载自:http://blog.csdn.net/c_duoduo/article/details/51615381 懒得自己配置或自己配置出现不明问题的朋友可以点这里:  [VSCode]Windo ...

  3. ubuntu中用vscode编译调试C\C++

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/q932104843/article/details/51924900 </div>< ...

  4. 【VSCode】Windows下VSCode编译调试c/c++【更新】

    版权声明:本文为博主原创文章,转载请注明出处. --------– 2017.06.10 更新--------- 便携版已更新,点此获取便携版 用于cpptools插件的配置文件更新 更新的launc ...

  5. vscode编译Window c++程序缺少vc运行库解决方法

    vscode编译的window程序默认拷贝到非开发者电脑会缺少vc运行库需要配置为Mtd模式这样其它电脑才能正常 vscode+cmakelist模式编译时只需要在cmakelist.txt文件中加入 ...

  6. Ubuntu下使用VSCode编译调试Betaflight飞控

    开源飞控交流:562983648 日期:2019.05.05 开发环境:ubuntu18.04 工具链:gcc-arm-none-eabi-7-2018-q2(7.3.1) 一.基础软件 vscode ...

  7. 真香预警,这个VSCODE可视化调试Go程序的方式,比直接用 dlv 命令香多了

    据不权威媒体报道,每位程序员身边都有一位这样的同事,觉得用命令行比用可视化工具牛逼.每次办公室遇见这样的,我都会腹黑一番:"用工具.命令那不都一样,纯看个人喜欢,觉得用命令牛逼你咋不用vim ...

  8. VSCode编译调试复杂C/C++项目

    这里写自定义目录标题 一.前言 二.安装编译器 三.创建项目目录 四.Makefile 五.VSCode设置 5.1 tasks.json 5.2 launch.json 六.Go! 七.注意 八.参 ...

  9. 在vscode中怎样debug调试go程序

    随着互联网时代的飞速发展,我们编码使用的开发利器也在不断更新换代,古话说工欲善其事必先利其器,对于Java开发者而言,eclipse和idea这两款神器各有千秋,因自己的爱好可以选取不同的IDE,但是 ...

最新文章

  1. 100万+奖金池!目标检测、车牌识别、人体分割等赛事全面启动! ECV-2021 来了...
  2. java里写分页,自己写的Java分页类
  3. 使用BCH提供的Cryptonize创建自己的加密代币
  4. ClickHouse之集群搭建以及数据复制
  5. 读《财务自由之路》教会我的道理
  6. js的parseInt函数结果为0很奇怪的问题
  7. 《C++ Primer Plus》16.2 智能指针模板类
  8. 设计模式之简单工厂模式,工厂方法模式,抽象工厂模式
  9. 蓝桥杯 第几个幸运数 set
  10. linux性能监控命令dstat详解【杭州多测师_王sir】【杭州多测师】
  11. 数据库实验——T-SQL编程
  12. 简述JAVAoop思想
  13. OpenAI 开源语音识别 Whisper
  14. php mysql 博客_基于PHP+MySQL的个人博客系统
  15. java中黑点是什么意思_[Java教程]input输入密码变黑点密文
  16. 【BP数据预测】差分进化算法优化BP神经网络数据预测【含Matlab源码 1315期】
  17. ISO质量管理体系认证有哪些流程?
  18. 多分类--dice acc计算
  19. 如何安全的修改win11用户名(微软账号登录,用户名会变成纯数字,好丑)
  20. 手机APP自动化 Appium教程

热门文章

  1. Single-Stage 6D Object Pose Estimation——6D姿态估计
  2. 逻辑回归:逻辑回归中的参数
  3. 数理统计三(随机分布)
  4. 冬令营2015 酱油记
  5. git小乌龟TortoiseGit的使用
  6. c#实现循环输入商品编号和购买数量,结账时应付金额并找零
  7. AttributeError: ‘FigureCanvasTkAgg‘ object has no attribute ‘set_window_title‘
  8. linux查找最近新增的大文件
  9. 磁盘显示设备未就绪,要怎么找到资料
  10. android rom签名 作用,Ubuntu下折腾Android笔记(一)——ROM 签名 | 翅膀~