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

news/2024/2/29 2:12:44

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

 

 

 

一.  程序调试 

 

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.ppmy.cn/news/1337129.html

相关文章

蓝桥杯备赛 week 4 —— DP 背包问题

目录 &#x1f308;前言&#x1f308;&#xff1a; &#x1f4c1; 01背包问题 分析&#xff1a; dp数组求解&#xff1a; 优化&#xff1a;滚动数组&#xff1a; &#x1f4c1; 完全背包问题 &#x1f4c1; 总结 &#x1f308;前言&#x1f308;&#xff1a; 这篇文章主…

c++代码发起请求,将文件上传至python实现的flask服务器

我测试了一下,800多M文件,不同ip之间传输,大概在9秒左右。目的是为了将数据传给python去计算,将结果保存下来。如果还需要结果的话,还是在本机方便点。 python服务器 import os os.environ[CUDA_VISIBLE_DEVICES] = "0"from flask import Flask,request from …

编程笔记 html5cssjs 064 JavaScrip语言规则

编程笔记 html5&css&js 064 JavaScrip语言规则 JavaScript 有哪些基本的语言规则&#xff1f; 接下来正式接触编程语言了&#xff0c;每一门语言都有一些基本的语言规则&#xff0c;这些规则有些在没有具体使用之前可能不好理解&#xff0c;初学者简单了解就可以了&…

Vite+Vue3使用Vue-i18n笔记

一、下载依赖 vue-i18n yarn add vue-i18n创建存放语言文件的目录 以及配置文件的配置 我是在src/lang 新建index.ts、cn.ts、en.ts以及test文件夹其中再分别新建cn.ts以及en.ts /lang/index.ts 用于导出vue-i18n需要的配置对象 import en from "./en.ts"; import…

spring boot 嵌入chatGPT步骤

一、需要良好的网络 二、需要在OpenAI官网https://openai.com/注册用户&#xff0c;并获取一个api-key&#xff0c;sk开头的 验证是否可用网站&#xff1a;http://tools.lbbit.top/check_key_valid/ 三、spring boot 配置文件 openai.proxyHost127.0.0.1 openai.proxyPort7890…

CSS3:最新特性和实例教程

今天简单复习一下css3的相关特性吧。 一&#xff1a;响应式设计 CSS3引入了媒体查询&#xff08;Media Queries&#xff09;和弹性盒子布局&#xff08;Flexbox&#xff09;等特性&#xff0c;使得响应式设计变得更加容易。媒体查询可以根据设备的屏幕大小、分辨率等属性来应…

sed命令

文章目录 sed命令一、sed编辑器sed工作过程 二、sed命令1、命令格式2、常用选项3、常用操作4、搜索替代4.1 格式4.2 指代变量—&4.3 分组替换4.4 变量 5、脚本格式 sed命令 一、sed编辑器 sed编辑器可以根据命令来处理数据流中的数据&#xff0c;这些命令要么从命令行中输…

二、Vue3文件目录介绍

node_modules: 项目的依赖库&#xff1b; src &#xff1a; 我们主要操作的地方&#xff0c;组件的增加、修改等都在这个文件夹里操作&#xff1b; assets: 放置静态资源&#xff0c;包括公共的 css 文件、 js 文件、iconfont 字体文件、img 图片文件 以及其他资源类文件。之所…

HCIA学习作业三

要求&#xff1a; 拓扑图&#xff1a; <AR1>ping 5.5.5.1 <AR1>display ip interface brief <AR1>display ip routing-table <AR1>display ip routing-table protocol static <AR2>ping 5.5.5.1 <AR2>display ip interface brief <…

Servlet基础之配置 Servlet 及其映射

文章目录 配置 Servlet 及其映射web.xml 头部声明信息配置 Servlet 映射关系 配置 Servlet 及其映射 不同版本的 Sevlet 的 web.xml 配置文件的头部信息是不一样的。不建议使用 Servlet 3.0 和 3.0 以下版本&#xff0c;太过于老旧了。建议使用 3.1 和 4.0 版本。 Tomcat 8 支…

时间序列(Time-Series)Embed.py代码解析

import torch import torch.nn as nn import torch.nn.functional as F from torch.nn.utils import weight_norm import math #定义了一个位置嵌入类&#xff0c;它能提供序列中每个元素的位置信息。 class PositionalEmbedding(nn.Module): def __init__(self, d_model,…

第三章 Linux

第三章 Linux 1.Linux课程介绍2.Linux简介3.Linux安装14.Linux安装25.Linux命令初体验6.文件目录操作命令-ls-cd-cat7.文件目录操作-more-tail-mkdir8.文件目录操作-rmdir-rm9.拷贝移动命令-cp命令10.拷贝移动命令-mv命令11.文本编辑命令-vim12.常用命令-find-grep13.软件安装&…

数据写入HBase(scala)

package sourceimport org.apache.hadoop.hbase.{HBaseConfiguration, TableName} import org.apache.hadoop.hbase.client.{ConnectionFactory, Put} import org.apache.hadoop.hbase.util.Bytesobject ffff {def main(args: Array[String]): Unit {//hbase连接配置val conf …

What is Rust? Why Rust?

why Rust&#xff1f; 目前&#xff0c;Rust 变得越来越流行。然而&#xff0c;仍然有很多人&#xff08;和公司&#xff01;&#xff09;误解了 Rust 的主张价值是什么&#xff0c;甚至误解了它是什么。在本文中&#xff0c;我们将讨论 Rust 是什么以及为什么它是一种可以增强…

mysqldump指定表导出数据

mysqldump指定表导出数据 使用mysqldump命令可以将MySQL中的特定表导出为数据。 下面是示例查询及其输出结果&#xff08;包含代码&#xff09;&#xff1a; # 导出名为table_name的表数据到文件dump.sql $ mysqldump -u username -p database_name table_name > dump.sq…

常用英文邮件的缩写,如FVI,CC等汇总

今天在群里发现有人发送了FYI&#xff0c;并配了一张图&#xff0c;我不明白什么意思&#xff0c;查了之后知道是供您参考的意思&#xff0c;这就促使我想知道更多相关的信息&#xff0c;于是开这个博文记录。 以下是一些常见的英文邮件缩写及其含义&#xff0c;紫色为我自身常…

HiveSQL题——排序函数(row_number/rank/dense_rank)

一、窗口函数的知识点 1.1 窗户函数的定义 窗口函数可以拆分为【窗口函数】。窗口函数官网指路&#xff1a; LanguageManual WindowingAndAnalytics - Apache Hive - Apache Software Foundationhttps://cwiki.apache.org/confluence/display/Hive/LanguageManual%20Windowin…

分享4款不能错过的修改照片尺寸的软件!

在当今这个数字化时代&#xff0c;照片已经成为我们分享生活、表达观点的重要方式。但是&#xff0c;你是否曾遇到过这样的问题&#xff1a;一张精美的照片因为尺寸不合适而无法在朋友圈中展现出最佳效果&#xff1f;不用担心&#xff0c;今天我们就来聊聊那些可以帮助你轻松修…

C++------高精度减法

题目描述&#xff1a; 分析&#xff1a; 一、A - B分两种情况&#xff1a; 当A>B ----> A - B&#xff1b;当A<B ----> -(B-A); 二、借位 t 的情况&#xff1a; t > 0 : 说明t不需要借位t < 0 : 说明 需要 t10 去补 AC代码如下&#xff1a; #in…

AI工具【OCR 01】Java可使用的OCR工具Tess4J使用举例(身份证信息识别核心代码及信息提前方法分享)

Java可使用的OCR工具Tess4J使用举例 1.简介1.1 简单介绍1.2 官方说明 2.使用举例2.1 依赖及语言数据包2.2 核心代码2.3 识别身份证信息2.3.1 核心代码2.3.2 截取指定字符2.3.3 去掉字符串里的非中文字符2.3.4 提取出生日期&#xff08;待优化&#xff09;2.3.5 实测 3.总结 1.简…
最新文章