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. CF729A Interview with Oleg 题解

    Content 给出一个长度为 \(n\) 字符串 \(s\),请将开头为 \(\texttt{ogo}\),后面带若干个 \(\texttt{go}\) 的子串替换成 \(\texttt{***}\ ...

  2. IDEA推荐配置(自动导入包、提示不区分大小写)

    设置快捷键方式为eclipse 设置代码提示不区分大小写 自动导入包 可以通过 Ctrl + 鼠标滚轮 来控制代码字体大小显示 显示行号和显示区分方法线 代码一行显示不下,软分行显示,点击鼠标右键 增 ...

  3. 【LeetCode】136. Single Number 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 异或 字典 日期 [LeetCode] 题目地址:h ...

  4. 【LeetCode】687. Longest Univalue Path 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS 日期 题目地址:https://leetco ...

  5. 【LeetCode】905. Sort Array By Parity 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述: 题目大意 解题方法 自定义sorted函数的cmp 日期 题目地址:h ...

  6. 【LeetCode】355. Design Twitter 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  7. 1742 开心的小Q

    如果一个数字存在一个约数是完全平方数,那么小Q就认为这个数是有趣的. 小Q喜欢收集有趣的数字,每找到一个有趣的数,小Q就会变得很开心. 小Q发现12是有趣的,18也是有趣的,它们都是36的约数,而在3 ...

  8. 【剑指Offer】第一个只出现一次的字符 解题报告(Python)

    [剑指Offer]第一个只出现一次的字符 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-intervie ...

  9. 1188 最大公约数之和 V2

    1188 最大公约数之和 V2 题目来源: UVA 基准时间限制:2 秒 空间限制:262144 KB  给出一个数N,输出小于等于N的所有数,两两之间的最大公约数之和.       相当于计算这段程 ...

  10. Java初学者作业——声明变量对个人信息进行输入和输出

    返回本章节 返回作业目录 需求说明: 声明变量存储个人信息(姓名.年龄.性别.地址以及余额),通过键盘输入个人信息并存储在相应的变量中, 最后将个人信息输出. 实现思路: 声明存储姓名.年龄.性别.地 ...