###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.一直到整个程序运行完成 (这时再点击运行框即可看到运行结果)

 

 

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

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

海外云手机对于亚马逊卖家的作用

近年来&#xff0c;海外云手机作为一种新型模式迅速崭露头角&#xff0c;成为专业的出海SaaS平台软件。海外云手机在云端运行和存储数据&#xff0c;通过网页端操作&#xff0c;将手机芯片放置在机房&#xff0c;通过网络连接到服务器&#xff0c;为用户提供便捷的上网功能。因…

电气自动化行业,全面数字化工作流程

电气自动化行业数字化转型所需流程软件&#xff0c;与大家分享如下&#xff1a; D-Hub企业数字化协同平台、SuperHarness数字线束软件、SuperPanel母排设计软件、D-Hub生产管理系统&#xff0c;全面的数字化工作流程&#xff0c;智能降本增效&#xff01; D-Hub D-Hub是一款…

Hive(15)中使用sum() over()实现累积求和和滑动求和

目的&#xff1a; 三个常用的排序函数row_number(),rank()和dense_rank()。这三个函数需要配合开窗函数over()来实现排序功能。但over()的用法远不止于此&#xff0c;本文咱们来介绍如何实现累计求和和滑动求和。 1、数据介绍 三列数据&#xff0c;分别是员工的姓名、月份和…

Python+uiautomator2 框架搭建

一、安装整体步骤 01 开发环境安装 jdk安装&#xff08;version "1.8.0_361"&#xff09;python安装 &#xff08;Python37&#xff09;python编辑器安装 &#xff08;PyCharm2021&#xff09; 02 运行环境安装 adb安装 &#xff08;Android Debug Bridge versio…

处理Servlet生命周期事件

处理Servlet生命周期事件 接收关于 Servlet生命周期事件通知的类称为事件侦听器。这些侦听器实现Servlet API中定义的一个或多个servlet事件侦听器接口。侦听器类的逻辑分类如下: servlet请求侦听器Servlet上下文侦听器HTTP会话侦听器1. servlet请求侦听器 servlet请求侦听器…

vivado 硬块规划器

硬块规划器 Versal自适应SoC的硬块规划GT组件从通用/通道更新为AMD的GT_QUAD粒度Versal™ 自适应SoC。为了启用某些GT共享用例&#xff0c;对GT向导流进行了修改使用Vivado IP集成商。使用Vivado IP集成商构建使用单个或多个GT_ QUAD。连接到GT_QUAD的自定义IP的设计条目为通过…

如何一键导出多张图片二维码?图片批量建码生成的方法

现在很多的物品信息都会生成一张单独的图片&#xff0c;然后生成二维码印刷到包装或者其他地方上使用&#xff0c;那么如何快速将多张图片多批量生码处理&#xff0c;相信有很多的小伙伴都不太清楚该怎么完成。其实&#xff0c;大量图片生成二维码的方法是很简单的&#xff0c;…

shell脚本-函数及数组

一.函数 1.函数的作用 语句块定义成函数约等于别名&#xff0c;定义函数&#xff0c;再引用函数 封装的可重复利用的具有特定功能的代码 2.函数的基本格式 法一&#xff1a; [function] 函数名 {命令序列[return x] #使用return或者exit可以显式的结束函数 }法二&…

最新计算机软件毕业设计选题大全

最新计算机软件毕业设计选题大全 1、毕业设计选题 博主介绍&#xff1a;✌️大厂码农|毕设布道师&#xff0c;阿里云开发社区乘风者计划专家博主&#xff0c;CSDN平台Java领域优质创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。✌️ 主要项目&#xff1a;小…

【Spring源码分析】循环依赖的底层源码剖析

循环依赖的底层源码剖析 一、预知知识二、循环依赖的底层源码剖析1. Spring 是如何存储半成品Bean的&#xff1f;getEarlyBeanReference 方法的源码分析 2. Spring 是如何解决的循环依赖呢&#xff1f;测试 3. 哪些循环依赖 Spring 是无法解决的呢&#xff1f;Async 引起的循环…

cocos creator 调用预设体Prefab中的方法(调用另一个节点的方法)

调用预设体中的方法 通过cc.instantiate(this.star)创建这个预设体实例这个star预设体中添加了一个脚本组件star.ts 获取到这个脚本组件star.getComponent(‘star’).test()&#xff0c;并调用其中的test()方法同理可以用该方式像另一个节点中传值 //星星预设体property(cc.Pr…

用户故事 | 以低代码之名,打造业务与IT协同新模式

关键发现&#xff1a; 客户痛点&#xff1a;对于一个人人关注创新的企业而言&#xff0c;业务团队从不缺乏创意&#xff0c;困扰他们的往往在于是否有一个工具&#xff0c;可以最高效地让创意变为现实。 解决方案&#xff1a;使用MENDIX低代码平台&#xff0c;在IT团队的支持下…

WebService的services.xml问题

WebService有多种实现方式&#xff0c;这里使用的是axis2 问题&#xff1a; 在本地开发&#xff0c;访问本地的http://localhost:8080/services/ims?wsdl&#xff0c;正常访问 但是打成jar包&#xff0c;不管是linux还是window启动&#xff0c;都访问不到&#xff0c;报错…

维护管理Harbor,docker容器的重启策略

维护管理Harbor 通过HarborWeb创建项目 在 Harbor 仓库中&#xff0c;任何镜像在被 push 到 regsitry 之前都必须有一个自己所属的项目。 单击“项目”&#xff0c;填写项目名称&#xff0c;项目级别若设置为"私有"&#xff0c;则不勾选。如果设置为公共仓库&#…

【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​​​ 目录 归并排序 代码实现&#xf…

Matplotlib应用-股票技术分析实战

MACD Moving Average Convergence/Divergence&#xff0c;意为异同移动平均线。它刻画的是股价变化的速度 MACD算法 指标含义公式短期EMA短期收盘价指数移动均线(12天)前一日EMA(12)11/13 今日收盘价2/13长期EMA长期收盘价指数移动均线(26天)前一日EMA(26)25/27 今日收盘价2…

qt5-入门-组件布局

参考&#xff1a; Qt学习之路_w3cschool 本地环境&#xff1a; win10专业版&#xff0c;64位 组件布局 绝对定位&#xff1a;给出确切的坐标值和尺寸&#xff0c;缺点是当用户改变窗口大小时&#xff0c;需要写函数响应变化&#xff08;或者禁止用户改变大小&#xff09; 布…

openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错

文章目录 openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错210.1 谓词下推引起的查询报错210.1.1 问题现象210.1.2 原因分析210.1.3 处理办法 openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错 210.…

Likeshop社区团购源码系统-社区团购更加便捷

一、什么是社区团购&#xff1f; 社区团购是一种基于社区的一种团购模式&#xff0c;依托于社区居民的消费需求&#xff0c;由社区团长组织发起&#xff0c;通过集中采购、批量销售的方式&#xff0c;为社区居民提供优质、优惠的商品。这种模式既满足了消费者对于优惠、便捷的…

Unity 观察者模式(实例详解)

文章目录 简介示例1 - 简单的文本更新通知示例2 - 多观察者监听游戏分数变化示例3 - 事件系统实现观察者模式示例4 - 泛型观察者和可序列化的事件系统示例5 - 使用C#委托简化版 简介 在Unity中实现观察者模式&#xff0c;我们可以创建一个Subject&#xff08;目标/主题&#x…