当前位置: 首页 > news >正文

【GESP】C++一级知识点之【集成开发环境】

初学者首选Orwell Dev-C++ 5.11(蓝色图标)——国内教材、竞赛、考级用得最多,体积小、零配置。内嵌 GCC 编译器(GCC 编译器的Windows 移植版),是 NOI、NOIP 等比赛的指定工具。

本文解决了调试不能通过的问题,详细介绍了如何配置编译器。

Dev-C++是一个可视化集成开发环境,可以用此软件实现C/C++程序的编辑、预处理/编译/链接、运行和调试。现在介绍Dev-C++常用的一些基本操作,每一位同学都要掌握。

官方下载镜像:(仅48M)

https://sourceforge.net/projects/orwelldevcpp/files/Setup/Dev-Cpp%205.11%20TDM-GCC%204.9.2%20Setup.exe

1、安装(直接双击即可)

Dev-C++ 的安装包不需要管理员权限(默认装到用户目录“C:\Users\你的用户名\AppData\Local\Dev-Cpp”,不写系统盘关键位置就能完成 99% 的安装步骤:  

  • 双击 exe → I Agree → Full → 改路径(例:D:\Dev-Cpp)→ Install → Finish。
  • 首次启动向导:选 简体中文、Consolas 12 号字体即可。

只有在两种情况下才需要“右键→以管理员身份运行”

  • 你想把 Dev-C++ 装进 C:\Program Files 这类受系统保护的目录;  
  • 电脑装了 安全软件/组策略拦截普通写入。  

所以: 初学者直接双击,装到默认路径,最省事。  若双击后提示 “权限不足”再改用管理员即可。

2、启动

  • 双击桌面快捷方式或从开始菜单打开Dev-C++

  • 首次启动会提示选择语言,选择"Chinese"即可

3、新建源程序

步骤:点击菜单栏 文件 → 新建 → 源代码(或按快捷键 Ctrl+N)。默认生成空白编辑窗口

关键提示:建议先保存文件再编码:Ctrl+S;C++源文件扩展名必须为.cpp(例如:hello.cpp

注意:必须在英文输入环境下编辑程序。

        在4.99以前的版本的Dev-C++环境下,为了查看程序运行结果,需要在main函数的return语句前加上system("pause")或getchar( ),这样程序运行到该语句时,结果显示屏幕将会停留,让大家有时间看程序的输出结果。否则结果显示屏幕将会一闪而过。在4.99之后的版本可不必加该语句,运行结束后结果显示屏幕将自动停留。

4、保存源程序到硬盘

        一个好的习惯是创建了一个新程序后,在还未输入代码之前先将该程序保存到硬盘某个目录下,然后在程序的编辑过程中经常性地保存程序,以防止机器突然断电或者死机。要保存程序,只需从主菜单选择“文件”—〉”保存”就可以将文件保存到指定的硬盘目录。

       此时会弹出一个对话框,在此你需要指定文件要存放的磁盘目录(例如: D:\c++ source),自定文件名称(例如:example1)以及保存类型。在点击右下角的保存按钮后,在D盘上的c++ source目录下将会出现一个名为example1.cpp的源文件。

提示:在输入程序的过程中记得随时对程序进行保存(菜单【文件】”->【保存】,或者组合键ctrl+s),此时会将程序重新保存到之前指定的目录下。如果想将程序保存到其他硬盘路径下,可以选择【文件】->【另存为】,可以重新指定程序的名称和目录。

5、编译

步骤:点击菜单栏【运行】 ->【编译】(或按 F9),并观察底部"编译日志"窗口:

  • 显示 0错误 0警告 表示成功
  • 显示错误信息[Error],并将源程序相应错误行标成红色底色,则编译失败需要修改代码

       “编译器”标签页中显示的错误信息是寻找错误原因的重要信息来源,每一位同学都要学会看这些错误信息,并且每一次碰到错误并且最终解决了错误时,要记录错误信息以及相应解决方法。这样以后看到类似的错误提示信息,能熟练反应出是源程序哪里有问题,从而提示程序调试效率。在排除了程序中存在的词法、语法等错误后,编译成功。此时在源文件所在目录下将会出现一个同名的.exe可执行文件(如example1.exe)。

6、运行

方法1: 直接运行
点击 【执行 → 【运行】(或按 F10

方法2: 编译+运行
点击 【执行 →【编译运行】 (或按 F11

运行效果:
弹出黑色控制台窗口显示输出结果:

7. 调试程序(Debug)

       通过预处理、编译和链接的程序仅仅是该程序中没有词法和语法等错误,而无法发现程序深层次的问题(譬如算法不对导致结果不正确)。当程序运行出错时,需要找出错误原因。仔细读程序来寻找错误固然是一种方法,但是有时光靠读程序已经解决不了问题,此时需要借助于程序调试(Debug)手段。这是一种有效的排错手段,每一位同学都需要掌握。

(1)设置程序断点:点击代码行号左侧灰色区域(出现红点)

       调试的基本思想是让程序运行到你认为可能有错误的代码前,然后停下来,在人的控制下逐条语句地运行,通过在运行过程中查看相关变量的值,来判断错误产生的原因。如果想让程序运行到某一行前能暂停下来,就需要将改行设置成断点。

如上图,将c=a+b语句设成断点,则程序运行完cin语句后,将会暂停。需要说明的是,你可以在程序中根据需要设置多个断点。

取消断点:改该代码行首再次点击即可。

(2)运行程序【需要重新配置,解决默认无法调试的情况】

        设置断点后,此时程序运行进入Debug状态。要想运行程序,就不能使用主菜单【运行】—>【运行】,而是需要用主菜单【运行】—>【调试】。

根本原因是:我们打开的是 单个 .cpp 文件(而不是“项目”),Dev-C++ 会把它当作“临时项目”,当前编译的是 Release 配置(如上红色框线标注),生成的 exe 里不包含调试符号(symbol table),gdb 无法把机器地址映射回源代码行号,于是 Dev-C++ 主动提示你重新用 Debug 配置 再编译一次。可是无论点击"Yes"还是"No",都无法断点调试。

需要我们手动配置解决,方案如下:

步骤1:检查是否选择了正确的编译器配置文件,确保选择了Debug配置,并注意系统是32位还是64位。这里我选择了“TDM-GCC 4.9.2 64-bit Debug”:

步骤2:检查是否显示了项目管理子窗口。在【视图】中,确保【项目管理】已被选中。
在这里插入图片描述

步骤3:配置编译器选项。

a) 点击菜单【工具】—>【编译选项】。

b)进入到编译器选项:

c)勾选“编译时加入以下命令”,并输入:-g3

d)确保“在连接器命令行加入以下命令”被勾选,并在“-static-libgcc”后加上“ -g3”。注意,不包括引号,有一个空格。 输入完成之后,先不要点击“确定”。

步骤4配置连接器选项。点击菜单【工具】—【编译选项】—【代码生成/优化】—【连接器】。

此处我们可以从上面的界面,直接切换标签到【代码生成/优化】,再选择标签【连接器】

确保“产生调试信息”对应为“Yes”。

点击“确定”。

(3)设置watch窗口

       在调试程序时,可能要看程序运行过程中变量的值,以检测程序对变量的处理是否正确,可以在调试时通过单击左下角的工具按钮【添加查看】,弹出如下窗口:

输入需要观察的变量名,则新增的变量将会显示在最左边Explore的Debug页中。如果左边Explore中的当前页不是Debug页,则可以点击Debug标签使之成为当前页。然后单击单击左下角的工具按钮【调试】。

输入2 3,界面如下变化,可以看到左侧a,b的值已经发生了改变。程序将运行到第一个断点处,此时断点处加亮色由红色变成蓝色,表示接下去将运行蓝色底色的代码。因为程序停步在第7行,还未执行,所以c=0。

要想运行蓝色底色的代码,单击工具按钮【下一步】或者【下一条语句】或者【单步进入】都可以

其中,下一步|Next Line(F8)】是单步执行,但不进入子函数,直接执行完函数,停在当前函数的下一行(遇到函数调用时,整条函数当作一步跳过去。)下一条语句|Step Into(F7)】也是单步执行,并且能进入被调用的函数内部,停在被调函数内部的第一行,可以继续单步观察函数内部变量(想看函数里怎么跑,就按它);【单步进入 / Step Into(与 F7 相同)】,功能同上【下一条语句】;【进入语句 / Run to Cursor(F4)】一口气跑到光标所在行再停,不管中间有没有函数调用

记忆口诀:
F8 跨栏:跨函数,不停里面。
F7 钻洞:钻到函数里面看细节。
F4 直达:直接跑到光标行。

http://www.lryc.cn/news/619250.html

相关文章:

  • TF-IDF:信息检索与文本挖掘的统计权重基石
  • [SC]如何使用sc_semaphore实现对共享资源的访问控制
  • 初识神经网络04——构建神经网络2
  • 【从零开始java学习|第四篇】IntelliJ IDEA 入门指南
  • Redis序列化配置类
  • uni-app实战教程 从0到1开发 画图软件 (学会画图)
  • 基于STC8单片机的RTC时钟实现:从原理到实践
  • 聚合搜索中的设计模式
  • 数据结构:中缀到后缀的转换(Infix to Postfix Conversion)
  • 开发避坑指南(23):Tomcat高版本URL特殊字符限制问题解决方案(RFC 7230 RFC 3986)
  • 一键设置 NTP 时区的脚本(亲测,适用于部署 K8S 的前置环境)
  • 数据结构:图
  • 终端安全与网络威胁防护笔记
  • Web 服务详解:HTTP 与 HTTPS 配置
  • 谷歌 Web Guide 如何重塑搜索排名及其 SEO 影响
  • AR眼镜新赛道:光波导与MicroOLED如何解决眩晕难题?
  • -bash: ll: 未找到命令
  • Python Day28 HTML 与 CSS 核心知识点 及例题分析
  • open Euler--单master部署集群k8s
  • C++联合体的定义
  • 六、SpringBoot多环境开发
  • 数据结构 二叉树(2)堆
  • 论区间dp:常用模型(附极角排序教程)
  • 计算机网络摘星题库800题笔记 第5章 传输层
  • 正则表达式解析(二)
  • mysql中的常见的索引类型及其特点
  • 前端css学习笔记3:伪类选择器与伪元素选择器
  • 开源!!! htop移植到OpenHarmony
  • 基于LLVM的memcpy静态分析工具:设计思路与原理解析(C/C++代码实现)
  • 实现文字在块元素中水平/垂直居中详解