VS Code调试C代码

1、前言

首先说明的是vscode是代码编辑器,并不是编译器,它本身并不能编译C语言。

在这里我们使用的是MinGW-w64作为C语言的编译器。MinGW-w64的前身是MinGW的全称是:Minimalist GNU on Windows。它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 Windows 中运行的可执行程序。

而且还可以使用一些 Windows 不具备的,Linux平台下的开发工具。一句话来概括:MinGW 就是 GCC 的 Windows 版本 。

我们这里使用的MinGW-w64是MinGW的升级版,MinGW只能编译32位程序,而MinGW-w64可以编译64位和32位程序。MinGW已经停止更新了,所以大家还是要使用MinGW-w64。

MinGW-w64推荐去官网下载:MinGW-w64 - for 32 and 64 bit Windows - Browse /mingw-w64 at SourceForge.net

1:下载绿色版,下载速度快

2:下载windows的安装版,一般情况下下载失败

所以演示绿色版的安装过程,绿色版只是需要添加环境变量,将绿色版解压到D盘根目录,如下

 按步骤添加环境变量

 测试MinGW-w64是否安装完毕

 2、编译C代码

下面将用MinGW-w64编译C代码,正如上文所说MinGW-w64就是gcc的windows版,所以直接就是gcc编译C代码。在D盘新建目录C,并在目录C中新建main.c文件,代码如下

#include <stdio.h>
#include <AclAPI.h>
int main(){char name[100];printf("What is your name?\n");scanf("%s",name);printf("Hello,%s,nice to meet you!\n",name);   
}

这就是一个简单C程序。下面使用window的cmd编译并运行这个C程序。

 使用windows的powershell编译也是一样的结果

3、vscode编译

上面演示了如何使用MinGW-w64编译C代码,vscode只需要调用这些命令就可以编译C代码,那么vscode的插件就可以优雅的解决这个问题,code runner是一款优秀的编译插件。

 因为我们的C代码使用了scanf,需要在终端输入所以需要使能code runner的Run In Terminal功能。

安装了这款插件,在右侧会出现一个运行按钮

点击这个运行按钮,就能编译并运行这个C代码。注意看下图1处,其实就是调用gcc的命令,和我们上面讲的一样。

类似的插件还有C/C++ Compile Run插件。

离开插件就不能编译???vscode当然可以自己调用gcc,自己完成代码的编译,选择运行->以非调试模式运行。这里我们只是编译C代码,然后运行,debug调试的问题,下面再说。

依次选择C++(GDB/LLDB)和C/C++: gcc.exe 生成活动文件

看到终端输出如下(下图我将两个终端并排显示,默认不是这样显示的)

这里可以看到,vscode运行了两个终端,一个编译C语言,一个运行C程序。并且产生了两个文件如下

launch.json作用是在C语言文件启动调试时提供配置参数

tasks.json是一个任务,用于编译C语言的

关于报错,下面制造了一个简单的错误,在终端中给出了出错的位置,这是gcc给出的错误,也就是导致编译不过的错误。

但下图的错误,是vscode认为你有错误,给你提示的,不是所有vscode报的错误gcc都会认为有问题的。并且vscode给出的错误一般与安装的插件有关。我们重点看gcc的错误。

4、多文件编译

上面已经完成了C的编译和运行,但只是一个文件,正常情况下一般会有多个文件。

我们有以下源码来验证多文件编译。

//main.c
#include<stdio.h>
#include "a.h"
int main(void) {int number;printf("input:\n");scanf("%d", &number);printHello();if((number > 1) && (number <= 100)) {printf("Small\n");} else if((number > 101) && (number <= 200)) {printf("Middle\n");} else {printf("Large\n");}return 0;
}//a.c
#include<stdio.h>
#include "a.h"void printHello(void) {printf("Hello world");
}//a.h
#ifndef __A_H_
#define __A_H_void printHello(void);#endif

首先使用code runner,运行结果如下

可以看出,code runner只编译main.c,编译报错找不到a.c中的printHello函数。修改code runner的扩展配置Excutor Map,单击前面的小齿轮,选择:将设置复制为JSON文本

然后单击在settings.json中编辑

打开文件如下settings.json

其中的一句代码是我们配置使能runInTerminal的,将我们刚刚复制的粘贴到它的下一行

注意1处需要添加一个逗号,并将2处的$fileName修改为*.c,如下

保存文件,返回main.c,执行code cunner的运行按钮,可以看到执行gcc的编译时,编译所有的c源文件。

看到这里,大家应该就理解了配置文件和执行的gcc命令之间的关系了。

对于上文提到的vscode自己也可以编译的问题,不使用插件如何编译多个文件?上文提到task.json是编译C程序的,它的配置如下

同理将1处的${file}修改为*.c就可以编译多个C文件了。这里就不再演示了。

5、调试

调试是很简单的,在调试之前需要保证编译时没有问题的(虽然这句话像是废话)在其他IDE中你可以直接debug调试,但在VScode中,建议你先编译,首选保证编译过了。因为vsode的编译环境是配置的,可能出现问题,如果编译不通过那就更不能调试了。

编译通过的程序,选中main.c直接选择运行->启动调试。

剩下的就和普通的IDE没有大的差异了

1:自动查看变量

2:手动查看变量

3:调用的堆栈信息

4:可以和其他IDE一样打断点

5:分别是运行,单步,进入函数,跳出函数,复位,停止等常见的调试按钮

6:终端交互界面

点击查看本文所在的专辑:开发工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26298.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VScode的代码截图插件CodeSnap

CodeSnap : 在 VS Code 中为您的代码截取漂亮的屏幕截图&#xff01; 插件名&#xff1a;CodeSnap官方地址&#xff1a;CodeSnap - Visual Studio Marketplace特征&#xff1a; 快速保存代码的屏幕截图将屏幕截图复制到剪贴板显示行号许多其他配置选项用法&#xff1a;选中需要…

Vscode——调试数据可视化插件debug-visualizer

debug-visualizer是一款极其优秀的调试数据可视化插件 安装方法 第一步&#xff1a;vscode插件库安装 debug-visualizer第二步&#xff1a;环境内输入 pip install vscodedebugvisualizer 使用方法 启动调试Ctrl Shift P 打开命令面板&#xff0c;输入 Debug Visualizer: …

VS Code 最好的 Git 可视化插件

&#x1f447;&#x1f447;关注后回复 “进群” &#xff0c;拉你进程序员交流群&#x1f447;&#x1f447; 作者丨小集 来源丨小集&#xff08;ID&#xff1a;zsxjtip&#xff09; Visual Studio Code 有几组 git 命令来为您的代码存储库执行和执行多项任务。但是&#xff0…

如何使用VScode软件测试接口

我们知道&#xff0c;Visual Studio Code&#xff08;简称VScode&#xff09;软件一般用于编写前端代码&#xff0c;但其实&#xff0c;它也可以很方便的用于接口测试&#xff0c;达到和postMan一样的效果。 怎么实现呢&#xff1f; 步骤如下&#xff1a; 1.安装 REST Clien…

视频特效软件有哪些?这些软件值得一试

大家平常在制作视频时&#xff0c;经常需要将多个视频拼接&#xff0c;但是如果两个视频中间没有什么转场过渡的话&#xff0c;会显得很单调。我们可以增加一些转场、音乐、特效&#xff0c;这样整支视频看起来效果会好很多。讲到视频特效&#xff0c;可能有些小伙伴会觉得它很…

python :超级大乐透

体育彩票 超级大乐透 dlt.py # codingutf-8 import randomdef xuanhao(total, count):element [x1 for x in range(total)]result []for i in range(count):res element[random.randint(0, len(element)-1)]element.remove(res)result.append(res)return result# 超级大乐透…

发卡网源码

简介&#xff1a;发卡网带代理功能&#xff0c;安装简单。 网盘地址&#xff1a;https://pan.baidu.com/s/1E3AtqCmBZPjXgaiUEXrM6Q 提取码:rsu4 展示&#xff1a;

最新鲸发卡企业发卡网系统源码+免授权

正文: 心心念念的鲸发卡来啦&#xff0c;企业发卡源码&#xff0c;鲸发卡。目前全网最稳定的发卡系统之一。 在运营版本&#xff0c;既然做就要把他当作一项事业来做。 程序开源无加密&#xff0c;完整运营级程序&#xff0c;非市面上垃圾程序BUG一堆。 此程序经过市场验证…

功能强大的发卡网源码+支付接口超多

正文: 有二十三个支付接口&#xff0c;三套前台模板。 由于还得更新其他源码&#xff0c;就填充了一个商品&#xff0c;UI看起来不错&#xff0c;脑补了下&#xff0c; 填充完商品后&#xff0c;应该会更好看。 程序: wwbwf.lanzouf.com/iigbh09ygu6b 图片:

【.NET AI Books 前言】Azure OpenAI Service 入门

本书是为 .NET 开发者而写的&#xff0c;让 .NET 开发者能快速掌握 Azure OpenAI Service 的使用技巧。 ChatGPT 的到来意味着我们已经置身于 AI 引起的全新变革中&#xff0c;作为开发者你可能将面临几种改变&#xff1a; GPT 模型到来后&#xff0c;如何去架构好企业解决方案…

github基本操作

目标 把本地的一个项目放到github上&#xff0c;方便浏览和管理 步骤 要将本地代码推送到 GitHub 上&#xff0c;您需要执行以下步骤&#xff1a; 1. 在 GitHub 上创建一个新的仓库。 2. 在本地计算机上使用 Git 命令行工具初始化一个新的 Git 仓库。 3. 将本地代码添加到 …

如何构造个人 AI 策略:从 AI 绘画的演进与 ChatGPT 现状出发?

持续关注 AI 相关探索&#xff1a;https://github.com/phodal/ai-research PS&#xff1a;就本文的结论而言&#xff0c;我相信你已经或多或少的有所体会了。也因此&#xff0c;本文更多的是展现一个思考的过程&#xff0c;而不是一个纯粹的结论。 AIGC 是什么&#xff1f;它是…

如何利用CPU Cache写出高性能代码,看这些图就够了!

世界就像个巨大的马戏团&#xff0c;它让你兴奋&#xff0c;却让我惶恐&#xff0c;因为我知道散场永远是——有限温存&#xff0c;无限辛酸。——卓别林 我们平时编写的代码最后都会交给CPU来执行&#xff0c;如何能巧妙利用CPU写出性能比较高的代码呢&#xff1f;看完这篇文章…

对视频剪辑应用灰度图像变换+Moviepy生成灰度视频处理遇到几个有意思的问题

一、引言 最近在学习图像处理的《直方图处理》&#xff0c;对直方图均衡处理效果感觉非常有用。 以前学习Moviepy音视频剪辑时&#xff0c;用的卓别林的一个黑白视频片段&#xff0c;感觉视频的噪点比较多&#xff0c;画面也整体偏暗&#xff0c;不禁想看看如果对其进行直方图…

大厂正在「去大厂化」

大厂逐渐不再是「大厂」。 撰文 | 佘宗明 大厂还值得去吗&#xff1f; 这成了摆在很多年轻人面前的问题。 搁几年前&#xff0c;这都不能称之为问题。 扁平化管理、快速上升空间、弹性工作制……比JK制服还诱惑。「财务自由」的召唤&#xff0c;更是胜却人间无数情怀。 那现在呢…

无心剑中译伊玛·拉扎罗斯《新巨人·自由女神》

文章目录 无心剑中译伊玛拉扎罗斯《新巨人自由女神》译友们中译伊玛拉扎罗斯《新巨人自由女神》1. 岩子版2. MNES版3. 天河版4. 铁冰版5. 好好做虾版6. 愚冠版卓别林十大经典语录卓别林最伟大的演讲《为自由而战斗》无心剑中译迈克尔杰克逊《自由无拘束》《被讨厌的勇气》- 什么…

当我真正开始爱自己——查理·卓别林

As I began to love myself I found that anguish and emotional sufferingare only warning signs that I was living against my own truth.Today, I know, this is “AUTHENTICITY”. As I began to love myself I understood how much it can offend somebodyAs I try to f…

快速做出原型

给定五六个维度约束下对比两个软件的表现&#xff0c;要用数据说话。这五六个维度&#xff0c;不限于丢包率&#xff0c;固有延时&#xff0c;抖动等。 若两个维度&#xff0c;一张表格即可展现&#xff0c;若四个维度&#xff0c;一个四维立方体可以展示&#xff0c;二维单元…

moviepy第一天|模糊视频中卓别林的头,并添加一个文本生成的结尾clip,同时保留音频

MoviePy(完整文档)是一个用于视频编辑的Python库:剪切,串联,标题插入,视频合成(又名非线性编辑),视频处理和创建自定义效果。有关一些使用示例,请参阅库。 MoviePy可以读取和写入所有最常见的音频和视频格式,包括GIF,并在Windows / Mac / Linux上运行,使用Python …

《新摩登时代》:卓别林演绎共识与同步流程优化

FISCO BCOS是完全开源的联盟区块链底层技术平台&#xff0c;由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造。开源工作组成员包括博彦科技、华为、深证通、神州数码、四方精创、腾讯、微众银行、亦笔科技和越秀金科等金链盟成员机构。 代码仓库&#xff1a;htt…