###C语言程序设计-----C语言学习(7)#(调试篇)

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。

 

 

 

一.  程序调试 

 

1.程序调试介绍:

  程序调试是软件开发过程中非常重要的一环,它可以帮助我们发现和修正程序中的错误和问题。通过调试,我们可以定位到程序中的具体问题所在,分析问题原因,并进行修复。

2.程序调试说明:

  程序调试是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。程序调试的目的是为了找出程序中的问题所在,希望程序在需要的地方暂停,以便查看运行到这里时变量的值。还希望单步运行程序,跟着程序的运行流程,观察哪条语句执行了,哪条语句没有执行。满足暂停程序,观察变量和逐条执行语句等功能的工具和方法总称为程序调试。

3.程序调试作用:

程序调试在软件开发中起到了至关重要的作用。它可以帮助开发者:

(1)检查变量的值和程序的执行流程,找出逻辑错误、语法错误以及其他Bug。
(2)真正理解程序代码执行的流程,看到程序是如何一步一步工作的。这有助于掌握程序的内部机制,也便于后期的优化和维护。
(3)定位错误发生的具体位置和具体原因,诊断并修正问题。
(4)优化程序,找到执行效率较低和资源浪费的部分,进行优化改进。这可以提高程序的整体性能和稳定性。
(5)验证程序的功能,检查每行代码的功能和变量的值变化,验证程序能否实现预期功能,满足产品需求。这是高质量软件开发的保证。

总而言之,程序调试可以最大限度地减少错误和提高程序质量,让开发者真正理解自己编写的程序,为后续的优化和改进创造条件。

4.如何在实践中运用程序调试:

程序调试是一个需要实践和技巧的过程。以下是一些常用的程序调试技巧和方法,可以帮助你在实践中更好地运用程序调试:

(1)使用调试器:大多数编程语言都有内置的调试器,或者可以使用第三方调试工具。这些工具可以让你在程序运行时暂停程序,查看变量的值,单步执行代码等。使用调试器是程序调试最基本的方法之一。
(2)日志记录:在程序中添加日志记录语句,可以让你观察程序的执行流程和变量的变化。这对于定位问题非常有帮助,特别是在处理复杂的问题时。
(3)单元测试:编写单元测试用例,测试程序的各个部分,确保每个部分都能正常工作。单元测试可以帮助你发现隐藏的问题和错误,提高代码质量。
(4)代码审查:与同事一起审查代码,可以发现一些潜在的问题和错误。通过讨论和分享经验,可以提高代码的质量和减少错误。
(5)模拟和仿真:对于一些难以重现的错误和问题,可以使用模拟和仿真工具来模拟程序的运行环境。这可以帮助你重现问题并找出原因。
(6)静态代码分析:使用静态代码分析工具来检查程序的语法、结构和其他潜在问题。这些工具可以在程序编译之前发现一些常见的错误和问题。
(7)版本控制:使用版本控制系统(如Git)来跟踪代码的变更和历史记录。这可以帮助你回溯和查找错误的来源,以及对比不同版本之间的差异。

总之,程序调试是一个不断实践和学习的过程。通过不断地尝试和实践,你可以逐渐掌握更多的调试技巧和方法,提高程序的质量和稳定性。

 

二.  用Dev-c++调试具体程序 

 

源程序:

#include <stdio.h>
#include <math.h>
int main()
{int i,limit,m;printf("Enter a number:");scanf("%d", &m);if (m<=1)  //小于等于1的不是素数 {printf("No!\n");}else if (m==2)   //2是素数 {printf("%d is a prime number!\n", m);}else{limit=sqrt(m)+1;for (i=2; i<=limit; i++){if (m%i==0)  //若m能被某个i整除,则m不是素数 {break;}}if (i>limit)  //循环结束,说明m不能被任何一个i整除 {printf("%d is a prime number!\n", m);}else {printf("No!\n"); }}return 0;} 

 

1.设置断点 

 

2.点击调试(此时弹出运行框,先不要输入数字,保留运行框后面再输入)

 

 

3.点击添加查看

 

 

4. 查看框内依次输入变量

 

三个变量输入后

 

 

5.此时运行框内输入数字(并点击enter键)

 

 

6.现在正式进入调试框

 

这时可观察变量的变化,蓝色框表示程序运行到的位置。

 

7.点击下一步继续调试

 

 

8.一直到整个程序运行完成 (这时再点击运行框即可看到运行结果)

 

 

感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容。 

 

 

 

 

 

 

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

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

相关文章

npm 和 yarn 的使用

安装 yarn npm i yarn -g查看版本 npm -v yarn --version切换 npm/yarn 的下包镜像源 // 查看当前的镜像源 npm config get registry// 切换淘宝镜像源 // 新的淘宝源&#xff0c;旧的淘宝源已于2022年05月31日零时起停止服务 npm config set registry https://registry.…

iOS 17.4 苹果公司正在加倍投入人工智能

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

重学Ajax

摘要&#xff1a;AJAX是一个在前端的应用非常广泛技术&#xff0c;为什么还要谈它呢&#xff1f;么得办法之前学的不全面&#xff0c;再收拾收拾。水平有限&#xff0c;欢迎指正&#xff01; AJAX&#xff08;全称&#xff1a;Asynchronous JavaScript and XML&#xff09;是一…

UPS负载过大有什么危害性

UPS&#xff08;不间断电源&#xff09;是一种用于保护电子设备免受电力波动和突然停电影响的设备。然而&#xff0c;如果UPS负载过大&#xff0c;可能会对其性能和寿命产生严重影响。以下是UPS负载过大的一些危害性&#xff1a; 1. 降低UPS效率&#xff1a;当UPS负载过大时&am…

【RT-DETR改进涨点】ResNet18、34、50、101等多个版本移植到ultralytics仓库(RT-DETR官方一比一移植)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本文是本专栏的第一篇改进,我将RT-DETR官方版本中的ResNet18、ResNet34、ResNet50、ResNet101移植到ultralytics仓库,网上很多改进机制是将基础版本的也就是2015年发布的ResNet移植到ultralytics仓库中,但是其实…

百度云网盘下载速度如何提升到正常速度

引入问题 我们在下载代码学习资料的时候大多数都是百度云网盘&#xff0c;但是限速&#xff01;下载的十分的慢&#xff0c;有什么办法能让我们不开通会员就能享受正常速度呢&#xff1f; 当然有&#xff01; 解决百度云网盘下载速度过慢&#xff0c;提高到正常速度 点击右…

Element ui 的组件弹窗 el-dialog点击的时候全屏变灰问题解决

最近在使用Element UI 的弹窗组件的时候发现这个组件各种的应用都没有问题&#xff0c;数据和元素的应用都是正确的但是在点击显示这个弹窗的时候全屏幕都会变灰。 这也不是因为增加了modal 遮挡幕的问题&#xff0c;在经过不断的排查代码的时候基本排除了代码的问题&#xf…

算法笔记:地理探测器

1 空间分层异质性&#xff08;spatial stratified heterogeneity&#xff09; 空间分层异质性&#xff08;空间分异性/区异性&#xff09;&#xff1a;层内方差小于层间方差的地理现象例如气 候带、土地利用图、地貌图、生物区系、区际经济差异、城乡差异以及主体功能区等 等[…

mybatis 实现查询默认添加分页

前言 分页查询在日常开发中无法避免,但每次sql编写时,mybatis 中使用limit,oracle中使用rownum分页,业务场景少的情况下,可以接受.但是随着业务增加每次相同的功能做重复开发又不是那么方便,那么我们有什么方案去解决开发中出现的分页问题呢? 一、PageHelper 框架分页 首先我…

温酒读Qt:QObject中篇2 ——欲遮还羞的 QObjectPrivate

《妙法莲华经》曰&#xff1a;“佛道长远&#xff0c;久受勤苦&#xff0c;乃可得成。” 世事修炼&#xff0c;莫不如是&#xff0c;日拱一卒无有尽&#xff0c;功不唐捐终入海。 传送门: 《温酒读Qt&#xff1a;QObject 序篇》 《温酒读Qt&#xff1a;QObject中篇1—— Q_OBJ…

前端框架---Vue2学习教程(上)

从HTML到现在一路跟过来的小伙伴们&#xff0c;坚持固然不容易&#xff0c;但我相信大家已经学到了不少&#xff0c;那么我们开始马不停蹄的进入前端的框架吧&#xff0c;下面讲的是Vue2&#xff0c;大家继续加油鸭&#xff01;&#xff01;&#xff01;&#xff01; Vue2 Vu…

装机打不开BIOS怎么办?如何进入Windows10的BIOS页面,如何关闭快速启动

电脑有快速启动&#xff0c;想进去BIOS页面非常困难&#xff0c;在临开机的页面&#xff0c;按触发按键不管用。 然后我看到了一种新的进入BIOS的方式&#xff1a; &#xff08;1&#xff09;win8以上的系统&#xff0c;按住shift&#xff0c;然后鼠标点击重启&#xff0c;再…

蓝桥杯2024/1/26笔记-----基于PCF8591的电压采集装置

功能实现要求&#xff1a; 每次建好工程文件夹&#xff0c;里边包含User&#xff08;放工程文件&#xff0c;mian.c&#xff0c;可以在这里写如同我这个文章的文本文档&#xff09;、Driver&#xff08;存放底层文件如Led.c&#xff0c;Led.h等&#xff09; 新建的工程先搭建框…

推荐一款Linux、数据库、Redis、MongoDB统一管理平台!

官方演示 状态查看 ssh 终端 文件操作 数据库操作 sql 编辑器 在线增删改查数据 Redis 操作 Mongo 操作 系统管理 账号管理 角色管理 资源管理 一.安装 1.下载安装包 cd /opt wget https://gitee.com/dromara/mayfly-go/releases/download/v1.7.1/mayfly-go-linux-amd64.zi…

CES 2024:AI赋能机器人,国产机器人更亮眼

原创 | 文 BFT机器人 一年一度的国际消费电子展(CES)又与我们见面了。作为全球消费电子和科技创新的盛会&#xff0c;CES每年都吸引着无数目光。今年&#xff0c;AI赋能机器人成为展会的一大亮点&#xff0c;而国产机器人更是凭借其创新技术和实用功能&#xff0c;成为全场焦点…

使用QT实现播放gstreamer的命令(二)

一、前言 上一篇文章写到了&#xff0c;如何快速使用C来执行gstreamer的命令&#xff0c;如何在QT中显示gstreamer的画面&#xff0c;原文如下&#xff1a; https://blog.csdn.net/Alon1787/article/details/135107958 二、近期的其他发现&#xff1a; 1.gstreamer的画面显示在…

蓝桥杯AT24C02问题记录

问题1&#xff1a;从这个图片上可以看出这两个在IIC的.c文件里延时时间不一样&#xff0c;第一张图使用了15个_nop_(); 12M晶振机器周期是 1/12M*121uS&#xff1b;nop()要延时1个指令周期。延时时间不对会对时序产生影响&#xff0c;时序不对&#xff0c;则AT24C02有没被使用…

关于Spring Boot和MyBatis常见的十道面试题

拦截器和过滤器有什么区别&#xff1f; 拦截器&#xff08;Interceptor&#xff09;和过滤器&#xff08;Filter&#xff09;都是用于在请求道道目标资源的之前或之后进行处理的组件。主要区别有以下几点&#xff1a; 依赖对象不同&#xff1a;过滤器是来时Servlet&#xff0…

IDEA安装MyBatisX插件

IDEA工具在开发人员中经常使用&#xff0c;从dao层到xml文件对应的查看很费劲&#xff0c;这时候就有相应的插件工具出现了MyBatisX。他的好处如下&#xff1a; mapper and xml can jump back and forth mybatis.xml,mapper.xml prompt mapper and xml support auto prompt lik…

Netty核心——Reactor下篇(十)

任务队列中的Task有3种典型使用场景 用户程序自定义的普通任务 比如有一个非常耗时长的业务 异步执行提交该Channel对应的NioEventLoop的TaskQueue中 用户自定义定时任务 该任务提交到scheduleTaskQueue中 非当前Reactor线程调用Channel的各种方法 例如在推送系统的业务线程…