c语言程序的调试方法

所谓程序调试是指对程序的查错和排错。

调试程序一般应经过以下几个步骤:

一、先进行人工检查,即静态检查。

在写好一个程序以后,不要匆匆忙忙上机,而应对程序进行人工检查。这一步十分重要,它能发现程序设计人员由于疏忽而造成的

多数错误。这一步往往容易被人忽视,总希望把一切都推给计算机去做,但这样会多占用机器时间,作为一个程序人员应当养成严谨的作风,每一步都要严格把关,不把问题留给后面的工序。

为了更有效地进行人工检查,所编的程序应力求做到以下几点:

①应当采用结构化程序方法编程,以增加可读性;

②尽可能多加注释,以帮助理解每段程序的作用;

③在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。各函数之间除用

参数传递数据外,尽量少出现耦合关系,这样便于分别检查和处理。

二、在人工检查无误后,再上机调试。

通过上机发现错误称为动态检查。在编译时会给出语法错误的信息,调试时可以根据提示信息具体找出程序中出错之处并改正。应

当注意的是有时提示出错的地方并不是真正出错的位置,如果在提示出错的行找不到错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多且各种错误互有关联,因此要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。

如果系统提示的出错信息很多,应当从上到下逐一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能

只有一二个错误。例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息。这时只要加上一个变量定义,就所有错误都消除了。

三、在改正语法错误(包括“错误(error)”和“警告(warning)”)后,程序经过连接(link)就得到可执行的目标程序。

运行

程序,输入程序所需数据,就可得到运行结果。应当对运行结果作分析,看它是否符合要求。有的初学者看到运行结果就认为没问题了,不作认真分析,这是危险的。

有时,数据比较复杂,难以立即判断结果是否正确。可以事先考虑好一批“试验数据”,输入这些数据可以很容易判断结果正确与

否。例如解方程ax2+bx+c=0,输入a、b、c的值分别为1、-2、1时,根x的值是1。这是容易判断的,若根不等于1,程序显然有错。

但是,用“试验数据”时,程序运行结果正确,还不能保证程序完全正确。因为有可能输入另一组数据时运行结果不对。例如,用公式求根x的值,当a≠0和b2-4ac>0时,能得出正确结果,当a=0或b2-4ac<0时,就得不到正确结果(假设程序中未对a=0作防御处理以及未作复数处理)。因此应当把程序可能遇到的各种情况都一一试到。例如,if语句有两个分支,有可能程序在经过其中一个分支时结果正确,而经过另一个分支时结果不对。必须考虑周全。事实上,当程序复杂时很难把所有的可能情况全部都试到,选择典型的临界数据作试验即可。

四、运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现。可以采用以下办法:

1.将程序与流程图仔细对照,如果流程图是正确的,程序写错了,是很容易发现的。例如,复合语句忘记写花括弧,只要一对照流

程图就能很快发现。

2.如果实在找不到错误,可以采用“分段检查”的方法。在程序不同的位置设几个printf函数语句,输出有关变量的值,逐段往下

检查。直到找到在某一段中数据不对为止。这时就已经把错误局限在这一段中了。不断减小“查错区”,就能发现错误所在。

3.也可以用“条件编译”命令进行程序调试(在程序调试阶段,若干printf函数语句就要进行编译并执行。当调试完毕,这些语句

不用再编译了,也不再被执行了)。这种方法可以不必一一去掉printf函数语句,以提高效率。

4.如果在程序中没有发现问题,就要检查流程图有无错误,即算法有无问题。如有则改正之,接着修改程序。

5.有的系统还提供debug(调试)工具,跟踪程序并给出相应信息,使用更为方便,请查阅有关手册。

总之,程序调试是一项细致深入的工作,需要下功夫,动脑子,善于积累经验。在程序调试过程中往往反映出一个人的水平,经验

和态度。希望大家给以足够的重视。上机调试程序的目的决不是为了“验证程序的正确”,而是“掌握调试的方法和技术”,要学会自己找问题,这样慢慢自己就会写出错误较少的实用程序。

到此这篇关于c语言程序调试方法整理的文章就介绍到这了,更多相关c语言程序的调试方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

在c语言中调试作用是什么意思,c语言程序调试方法整理相关推荐

  1. main在c语言中的作用,main函数在C语言中是怎么定义的?有什么作用?

    main函数在C语言中是怎么定义的?有什么作用? 更新时间:2019-10-24 13:55 最满意答案 额,main不是程序的最开始啦.拿用glibc的程序来说,C语言执行的过程应该是 _start ...

  2. goto在c语言中的作用,关键字goto在C语言中的使用

    1.goto关键字基础知识关键字goto从字面的意思就是"去哪里"的意思,专业一点的话表示无条件跳转的意思(有学过汇编的小伙伴应该会觉得非常像jump指令),在C语言中的使用格式是 ...

  3. opencomm在c语言中的作用,你能用C语言编写面向对象的代码吗?

    既然你说的是多态,那么是的,你可以,在C+出现之前,我们就在做类似的事情. 基本上,您使用的是struct若要同时保存数据和指向该数据的相关函数的函数指针列表,请执行以下操作. 因此,在一个通信类中, ...

  4. %6f 在c语言中的作用,最简单的C程序设计 1.实验目的 ①掌握C语言中使用最多的一种语..._考试资料网...

    最简单的C程序设计 1.实验目的 ①掌握C语言中使用最多的一种语句--赋值语句的使用方法. ②掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符. 2.实验内容和步骤 掌握各种格式转换符的正确 ...

  5. c语言调试时出现的三种错误,C语言课件 第十四章 常见错误和程序调试

    <C语言课件 第十四章 常见错误和程序调试>由会员分享,可在线阅读,更多相关<C语言课件 第十四章 常见错误和程序调试(36页珍藏版)>请在人人文库网上搜索. 1.第十四章常见 ...

  6. c语言中存贮班级学生的变量,C语言----变量教案.docx

    C语言----变量教案 课 题 2.2 常量和变量----变量 课型 理实一体化 授课班级 高二计算机(升学班) 课时 2 教学目标 复习巩固C语言中常量的应用: 掌握C语言中变量的命名规则及应用. ...

  7. php 1 2 3 转arry_在PHP语言中使用JSON和将json还原成数组的方法

    在之前我写过php返回json数据简单实例,刚刚上网,突然发现一篇文章,也是介绍json的,还挺详细,值得参考.内容如下 从5.2版本开始,PHP原生提供json_encode()和json_deco ...

  8. c语言中用于获取字符串长度的函数是,C语言中求字符串长度的函数的几种实现方法...

    C语言中求字符串长度的函数的几种实现方法 1.最常用的方法是创建一个计数器,判断是否遇到'\0',不是'\0'指针就往后加一. int my_strlen(const char *str) { ass ...

  9. 循环语句在c语言中的作用是什么,C语言中循环语句的使用

    C语言中的循环语句 在C语言中,有三种类型的循环语句: for语句.while语句和do While语句. 分别介绍如下: 1.for循环语句 for语句格式为: for(表达式1;表达式2;表达式3 ...

最新文章

  1. 领导者有3个要求,你做到了吗?
  2. jquery下载教程
  3. 两位智源青年科学家榜上有名!2020青橙奖公布
  4. 提取指定的PDF表格保存到Excel
  5. 选择存储服务器硬盘并解决一些疑问
  6. linux远程代码执行漏洞,Bash远程任意代码执行安全漏洞(最严重漏洞)
  7. DNS(三)--子域授权和视图
  8. 安卓学习笔记23:常用控件 - 网格视图与图像切换器
  9. 读JavaScript权威指南(第六版)笔记(第二章)
  10. Fiddler抓包 - 系统找不到相应的文件FSE.exe,未能找到路径CustomRules.js的一部分,未能加载程序或程序集 “fiddle“ 或它的依赖项
  11. 华为交换机修改BootROM密码
  12. 手机桌面隐藏大师_【应用隐藏大师app】应用隐藏大师安卓版_应用隐藏大师手机版下载v2.8.1 - 绿点安卓网...
  13. PTA 乙级 【1007】素数对猜想
  14. lib库知识全面讲解(.lib、.dll)
  15. 安卓逆向工程之工具使用JADX,JEB,GDA的安装使用
  16. 读书笔记: 发论文,拿项目其实很简单
  17. virtio-input
  18. php hyper-v,win10自带播放器 rmvb_win 配置php_win 10 hyper-v
  19. 【发票识别】基于图像形态学处理的发票数字识别的MATLAB仿真
  20. I.MX启动方式和头部

热门文章

  1. MySQL—数据处理之增删改查(四)
  2. 支付宝扫码答奥数 5分钟做出来可免单
  3. 搭建自己的dockerhub仓库
  4. 河北专接本计算机类学校有哪些,河北专接本一类院校是哪几所?
  5. HTML标签-体育新闻练习
  6. ArcGis 10.2.2 安装教程
  7. Qt: error: lvalue required as unary ‘‘ operand错误解决
  8. 芯准TTE系统测试与验证(6)—— TT+BE+RC流混合传输
  9. c语言装箱问题思路,C语言基于贪心算法解决装箱问题的方法
  10. Colab使用教程(超级详细版)及Colab Pro/Colab Pro+评测