C\C++ IDE 比较以及调试

内容概要

这个作业属于哪个课程 2022面向对象程序设计
这个作业要求在哪里 2022面向对象程序设计寒假作业1
这个作业的目标 IDE 选择以及代码调试
作业正文 如下
其他参考文献

IDE 选择

在大一学习C语言的过程中已经有稍微接触了IDE的选择。

要做出IDE的选择就要首先明确自己的需求

大学阶段,要编写的程序大多都比较小。暂时较少地涉及到多文件的大项目。

所以目前这个阶段,需要的是一个轻量级,小巧,拥有简单的调试功能的IDE。

综合现在流行的IDE, 我列出了这个表格。

IDE名称 体积 配置难度 内置编译器 多文件编译 调试功能 自动补全 其他Feature
Visual Studio 巨大 msvc 一键 强大 IDE中的航空母舰
CLion CMake配置 MinGW 一键 智能补全 Jetbrain家联动
Dev C++ GCC 一键 拉胯 古老
VS Code 有一定要求 自定义 自己写配置文件 自己配置,略强 拓展性极强
有终端显示
小熊猫 Dev C++ MinGW 一键 较强 一键试题集测试

综合以上因素,目前我所使用的IDE是 小熊猫 Dev C++,打算在这个寒假里逐步迁移到 VS Code(馋 VS Code 的多语言支持,和无敌的拓展性)

小熊猫 Dev C++ 是一名个人开发者在原版 Dev C++ 的基础上做改进,重新打包整合成的一个版本。实现了代码自动补全,增强调试功能,高DPI支持,试题集等特性功能。基本完善了原版的薄弱点,极大程度上提高了可用性。

而像是 Visual Studio 和 CLion 由于体积过于庞大,导致启动速度慢。每次写东西还要新建一个项目,流程过于繁琐。暂时不考虑这些IDE。

对于 VS Code 他主要是要自己去配置,太麻烦了。但是他的集成性非常高,短小精悍。我也非常馋他的多语言支持和云同步。但目前我还有几个问题没有解决,等到这些个问题能够基本解决的时候就迁移到 VS Code 上去了。

  • 实现 C/C++ 的项目建立,多文件编译
  • 程序汇编代码的调试
  • VS Code 调试功能的实现

代码调试

小熊猫 Dev C++ 的调试提供了以下的功能。

  • 断点
  • 表达式监视
  • 单步跳过
  • 单步进入
  • 单步跳出
  • 执行到光标处
  • 继续执行
  • 停止执行

简单学习了一下 C++ 的代码编写,以下是测试用的代码。通过这个简陋的实例来演示一下小熊猫 Dev C++ 的调试功能。

#include <iostream>

int main(void)
{
std::cout << "Hello C++!" << std::endl; for (int i = 0; i < 10; i++)
{
std::cout << "For loop iteration:" << i << std::endl;
} std::cout << "End of program." << std::endl; return 0;
}

首先,点击绿色虫子按钮或按下F5启动调试。

如果程序中不存在断点,那么在启动调试之后,程序则会从 main 函数开始逐步执行。(如下图所示)

若代码中存在断点,那么程序则会在运行到断点的时候,自动终止运行。从而允许开发者进行进一步的调试。

如图所示,从该程序的第5行开始执行。

此时,点击单步跳过。程序则会执行这行语句(即第五行的代码),并执行下一行代码。

如图所示,命令行终端中出现了

Hello C++!

同时程序执行到第七行。

对于循环语句,或是函数的调试,我们就可以用到单步进入这一功能。进入到语句的内部去执行代码。

同时,我也设置了一个表达式监视。不仅仅可以用来监视单一变量的数据,还能够通过设置不同的表达式内容,如i + j 等,来满足不同的调试需求。

点击单步进入。我们就能看到命令行窗口中输出了这样的内容。

在点击了单步进入之后,我们便可以多次点击单步跳过来调试for循环中的语句。

可是,如果循环次数过多,要通过多次点击单步跳过来退出循环就比较傻了。

这时就可以使用单步跳出继续执行功能,来跳出循环体或函数体。跳出后,程序会恢复正常运行。如果此后没有设置断点的话,程序则会自动退出。

所以,为了继续调试我们需要在函数体的后面设置一个断点。通过点击编辑器左侧的行数,就可以为这段程序设置一个断点。

重新调试。程序在断点处自动终止。直到return语句执行,程序结束运行。

调试至此结束。

程序输出

Hello C++!

For loop iteration:0

For loop iteration:1

For loop iteration:2

For loop iteration:3

For loop iteration:4

For loop iteration:5

For loop iteration:6

For loop iteration:7

For loop iteration:8

For loop iteration:9

End of program.

C\C++ IDE 比较以及调试的更多相关文章

  1. Python开发环境Wing IDE如何使用调试功能

    在使用Wing IDE开始调试的时候,需要设置断点的行,读取GetItemCount函数的返回.这可以通过单击行并选择Break工具栏条目,或通过单击行左边的黑色边缘.断点应该以实心红圈的形式出现: ...

  2. 关闭jetbrains ide support 正在调试此浏览器提示

    1 安装JetBrains IDE Support插件 插件地址 2 启用插件 3 设置访问端口 4 WebStorm中设置Live Edit 5 关闭"JetBrains IDE Supp ...

  3. 利用 PhpStorm、Idea 等 IDE 如何 运行/调试 Go 程序 ?

    以自己常用的 PhpStorm 为例 第一步:下载安装 Go插件 File -> Settings -> Plugins -> 输入关键字:Go 第二步:新建 Go项目 File - ...

  4. pdb-不需要IDE也能调试

    python中有个pdb模块,使python代码也可以像gdb那样进行调试,一般情况下pdb模块可以在代码内直接使用,也可以通过命令行参数的形式添加该模块进行调试(python -m pdb file ...

  5. 使用 WebStorm IDE 调试 Pomelo 应用程序

    使用得心应手的IDE来开发应用程序,可以使我们的工作事半功倍.而调试则更可以让我们准确的定位BUG,发现问题.本文讲述如何使用 WebStorm 这个怪兽级JavaScript IDE来调试 Chat ...

  6. Python开发环境Wing IDE的Blender的Python代码调试技巧

    Wing IDE是一个集成开发环境,可用于开发.测试和调试为Blender编写的Python代码,Blender是一个开源的3 D内容创建系统.Wing IDE提供自动完成.调用提示.强大的调试器.以 ...

  7. Python开发环境Wing IDE如何进行命令行调试

    Wing IDE专业的调试探针提供了一种强大的方法来发现和解决复杂的错误.这很像Python Shell但允许用户直接参与进已经暂停的调试程序中: 通过键入在刚才发生异常的地方键入下列数值进行尝试: ...

  8. 痞子衡嵌入式:MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项(i.MXRT500为例)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项. 痞子衡前段时间写过一篇小文<为i.MXRT设计更 ...

  9. NodeJS的代码调试和性能调优

    本文转自我的个人博客. NodeJS 自 2009 年显露人间,到现在已经六个年头了,由于各种原因,中间派生出了个兄弟,叫做 iojs,最近兄弟继续合体,衍生出了 nodejs4.0 版本,这东西算是 ...

随机推荐

  1. 任务日历关联(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 有时候吧,一件大事是由N件小事组成的,而这N件小事当中,不是每件事都可以在周末停下来的,当然也不是所有的事都必须在周末完成 ...

  2. uni-app + Cloudbase——uni-app 项目中如何使用腾讯云开发后端服务

    1 基本介绍 uni-app 是一个基于 Vue.js 的跨端开发框架,一套代码可以发布到 App.小程序.Web 等不同平台 腾讯云开发平台 Cloudbase 提供的 @cloudbase/js- ...

  3. java 输入输出IO流:标准输入/输出System.in;System.out;System.err;【重定向输入System.setIn(FileinputStream);输出System.setOut(printStream);】

    Java的标准输入输出分别通过System.in和System.out来代表的,在默认情况下它分别代表键盘和显示器,当程序通过System.in来获取输入时,实际上是从键盘读取输入 当程序试图通过 S ...

  4. word文档打钩记录快捷键

    先按住键盘上的 Alt 键不放,然后在小键盘区(数字键区)输入 9745 ,最后松开 Alt键.

  5. 【C语言】Socket发送HTTP-TCP请求,数据有字符串插入

    问题描述: 场景:编写Socket接口,向LOKI发送POST请求查询数据 BUG发现位置:通过cJSON读取时间戳,发现被截断. 现象:通过read()去读取返回的数据,数据行中被插入字符:如下 c ...

  6. JAVA遍历某个文件夹下所有文件listFiles() 实现按照名称升序排序

    File[] files = file.listFiles(); List fileList = Arrays.asList(files); Collections.sort(fileList, ne ...

  7. C++字符串常量跨平台编译问题

    C++字符串常量跨平台编译问题(与字符串编码相关),有需要的朋友可以参考下. 1. 问题 在C++代码中,给一个string类型的变量赋值一个中文字符串常量,例如: string s = " ...

  8. 【九度OJ】题目1467:二叉排序树 解题报告

    [九度OJ]题目1467:二叉排序树 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1467 题目描述: 二叉排序树,也称为二叉查找树 ...

  9. 【LeetCode】165. Compare Version Numbers 解题报告(Python)

    [LeetCode]165. Compare Version Numbers 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...

  10. 【已开源】Flutter 穿山甲广告插件的集成-FlutterAds

    前言 上篇文章我们聊了国内各大广告平台对 Flutter 的支持程度和我为什么创建 FlutterAds 来构建优质的 Flutter 广告插件,帮助开发者获利.本篇我们来看看Flutter 穿山甲广 ...