对C语言程序设计调试技术的几点探讨

时间:2022-09-27 05:39:32

对C语言程序设计调试技术的几点探讨

摘 要:C语言程序的功能强大,具有表达能力强、使用灵活、应用范围广、目标程序处理迅速、可移植性强,且其具有对硬件进行直接操作的功能,促使其在实际生产中得到广泛应用。C语言是一种高效的结构化语言,文章主要针对C语言程序设计调试技术展开探讨。

关键词:C语言程序;调试技术;探究与分析

近些年来,笔者在研究C语言程序设计过程中,发现许多人对于自身编辑的C语言程序运行中出现的错误的处理方法存在许多问题,无法有效判断程序错误的原因以及其对应的调试方法,文章主要从两方面分析C语言程序设计调试技术。

一、运行错误的判断与调试

一般情况下,C语言程序运行错误被分为两种:逻辑错误与程序设计错误,前者是指编译时没有错误提示,可以运行,但实际的运行结果与程序预期结果之间有偏差;后者是指程序设计中存在的问题,在编译与连接程序时也没有被发现,程序设计错误的主要表现为:计算机突然死机、自行热启动或输出信息混乱等[1]。

文章主要介绍两种常见的运行错误调试方法:

①程序算法设计不合理

有一种逻辑错误主要是由于C语言程序设计时的算法不合理而引起的,例如对边界及特殊情况未作预先处理,例如下述循环:

While(count)

x

count=count-1;

y

该循环的设计构思是进行count次循环,但是在该循环中,while旁边的判断条件恒为真,程序就会进入“死循环”,这显然是由于算法设计错误而导致的,但是编译器对于该类错误的敏感度较低,只有程序运行出现异常的时候才可能被发现[3]。再举一个例子:根据海伦公式计算三角面积的时候,首先需要对给出的三条边长是否符合“三角形任何两边的和大于第三边”的定理,若不符合这一定理则运算结果毫无意义;而程序员在设计一般实系数一元二次方程的程序时,必须设定处理复数情况的程序,避免出现运行错误[4]。若采用手算的方法是不需要先考虑到这方面,可以在出现问题后再根据实际情况提出解决措施。但是C语言程序是为计算机设计的,计算机不具备人脑自行应变的能力,因此,在程序设计的过程中必须事先将可能发生的一切问题都考虑到,特别是客户委托程序员设计的或是作为商品出售的软件更要注意这一问题。

②程序输入时的打字错误

还有一种常见的逻辑错误是在C语言程序输入过程中,由于程序员不小心打错字导致的,例如将判断条件中的“>=”输为“>”,将相等判断“==”输为“=”等。存在此类错误的程序在运行过程中出现的错误表现具有多样化,且很难将该错误出现的原因与打字错误联系起来[5]。

数据输入中存在的字符错误或字符的格式错误等都会影响程序的运行结果,尤其是在数据量大,且数据输入采用人工输入的工作中,极其容易发生这种错误。笔者以多年工作经验建议当数据输入量较大时,采用文件记录的方式,再通过读写文件来进行数据输入,这样就能够通过编辑数据文件来检测数据中存在的错误,并且在重新计算或调试过程中就不需要反复输入[6]。这种方法非常适用于科学或工程计算应用程序中的数据计算。

还有一种方式就是采用自行编写的、比较完善的数据校验输入模块来取代C语言中的scanf()函数来输入数据。这种方法多用于数据处理、事务管理等复杂的应用程序开发,常常需要将数据输入与用户界面等模块相结合,对编程技能有较高的要求。

二、C语言程序设计基本调试方法

文章主要针对C语言程序设计基本调试方法的四种方法进行介绍。

1.标准数据校验

在程序编译、连接完毕之后,下一阶段就是运行调试。运行调试阶段首先需要使用若干组已知结果的标准数据对程序进行检验。在此过程中标准数据的选取对检验结果具有重要影响,因此,标准数据的选择需要选取具有代表性且比较简洁的数据,主要是为了简化对检验结果正确性分析的不足[7]。此外,对重要的临界数据也需要进行检验。

2.程序跟踪

对于复杂的大型程序而言,上述检验一次性通过是不可能完成的。一般情况下,程序存在各种各样的问题(程序存在问题是一个普遍现象,一个错误也没有的程序在实际中较少),因此,需要对程序进行严谨的跟踪调试。

程序跟踪是调试工作中的一种方法。程序跟踪的方法是通过让程序一句一句的执行,通过观察程序执行过程中的数据以及程序的流程变化来分析其中存在的错误。例如在Turbo C中,可以采用两种程序跟踪的方法,一种是通过利用集成环境中分步执行、断点设置以及变量内容显示等功能观察程序的合理性;还有一种方法是传统方法,其主要通过在程序中直接设置断点、打印重要变量来观察程序有无错误存在。

3.边界检查

在数据检查过程中,要重视边界可能存在的特殊情况,例如以下循环:

While(count

x

y

需要检查设计数据count等于0、负数、999及1000等情况。若程序中存在if-else或switch等语言组成的分支时,也需要设计相应的判断数据,且对分支中的路径进行检测。

4.简化循环次数

在调试程序的过程中,可以通过简化程序来实现提升调试速度的目的,例如减少循环次数、减小数组规模、屏蔽部分次要程序段等方法。但是在简化程序的过程中,要注意不能太过简化,否则无法代表程序真实的运行状况。举个例子来说,对于一个求解N元一次方程组的程序来说,仅通过将N设置为2的检测是远远不够的,不能确定该程序是否在数值较大的方程组中也能得出正确的数据。若在N=5或6的情况下程序计算正确,则可以确保程序出错的可能性较小。

结束语

计算机技术的不断发展促使现代人们工作、学习以及生活方式发生巨大改变,且随着计算机软件功能的不断强大,使得计算机软件广泛应用于各个领域中。但是在C语言程序应用过程中,程序错误的出现威胁着程序软件的正常运行。因此,提高程序安全性成为程序员有待解决的问题。文章主要针对C语言程序设计调试技术展开分析,首先介绍了C语言运行错误的判断与调试,分析了2种常见逻辑错误判断与调试方法,然后针对4种C语言程序设计基本调试方法进行阐述,旨在提高C语言程序设计调试技术水平。

参考文献

[1]张秀美,赵旭霞.程序调试技术在C语言函数教学中的应用[J].教育教学论坛,2014,22(11):85-86.

[2]崔光佐,程旭,佟冬等.面向处理器的系统级模拟、仿真及调试技术 ――基于软硬件协同设计的新方法[J].计算机研究与发展,2011,38(3):361-367.

[3]李从宇,王宝光.嵌入式DSP系统C语言硬件编程技术[J].测控技术,2013,26(4):68-70.

[4]姚放吾,金鑫.基于Monitor的C语言源代码调试器的设计与实现[J].计算机技术与发展,2014,21(6):55-58.

[5]吴兴华.基于C语言软件开发的效率、移植及调试[J].数字技术与应用,2013,14(12):172-172.

[6]林广栋,黄光红,耿锐等.一种DWARF格式C语言调试信息分析方法[J].电脑知识与技术,2014,14(25):5825-5833.

[7]陈圣磊,刘林源.调试技术在C语言程序设计教学中的作用探讨[J].电脑知识与技术,2015,11(24):80-82.

上一篇:瓷片砖包装生产线的关键技术研究 下一篇:假小子与胖企鹅的斗争