友情提示:680元/半年,儿童学编程,就上码丁实验室。
一般来说,程序不可能一次开发正确。往往会出现出错的情况。如何发现错误、定位错误并修改程序呢?
从有程序开发的那一天开始,程序员就在不断地和程序中的BUG作斗争。为什么叫“BUG”呢,背后还有一个小故事。

马克2号(Harvard Mark II)编制程序的葛丽丝·霍波(Grace Hopper)是一位美国海军准将及计算机科学家,同时也是世界最早的一批程序设计师之一。
有一天,她在调试设备时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是,霍波诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,竟成为后来计算机领域的专业行话。
从软件开发的角度来说,程序调试是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。
这中间包括了几个方面的内容。
1通过手工或其它方法,发现程序与设计功能上的不一致;
2通过跟踪及分析等方法,定位错误所在的位置;
3提出合适的方式,对错误进行修改;
4继续进行调试,直到与想达到的目的相同为止。
这里面需要讨论的问题比较多,包括了不同类型错误的分析、程序测试的方法、程序的跟踪、程序的修改等。

本次我们讨论之中的一个问题,即程序的跟踪。

程序的跟踪有两个意义
另一个是对于程序中变量值的跟踪,即知道在程序运行的过程中,各变量是如何变化的。
在其它代码式的编程软件中,一般在集中开发环境中提供了较多的调试功能,包括代码中断点的设置,单步跟踪及程序中主要变量值的监视等功能。
作为面向入门者的软件,Scratch在调试方面提供的功能比较少。所以就需要我们使用一些比较特殊的方法来完成跟踪的工作。
我们的目的是知道程序是如何一句句运行的。但Scratch除了在当前运行的积木总块周围显示高亮,没有其它的提示。为了能够知道程序运行到了哪里,可以使用如下的方法。即在关键位置加上交互式的语句。可以使用“说”“想”的积木。这样在程序运行到这个位置时,就会有所反应。
如果想在某个位置上中断程序,就可以放置“询问并等待的积木”这样在运行到这个位置时,程序就会停下来,可以进行检查变量值等操作。
有如下几种方法可以对变量进行跟踪。
Scratch提供了显示变量值的方法,即在屏幕上显示值。这样在程序运行的过程中就能看到值的变化。
此方法的优点是简单方便,缺点是,如果值变化得很快,就很难看到值的变化过程(可以配合中断程序的方法)。而且这种方法无法显示出克隆体中的变量值。
对于连续变化的值,可以使用一个列表保存。
可以使用列表来记录每次值的变化。
下面举一个实例,求1到10的和。在程序中使用了上述的各种方法,大家可以试用这个例子,并自己研究如何能够更有效地跟踪程序和发现错误。
在每进行一步计算时,都会显示当前的S及N,并进行中断。最后还在列表中保存了每一步计算出的S值。
总结
结论:
1 测试是软件开发中的重要过程,通过测试,才能够发现软件中存在的问题并进行修改。
2 本文章介绍了一些可以在Scratch中使用的跟踪程序的方法。
3 不管哪种方法,都要结合对于程序的了解及分析来设计跟踪的方案。调试程序可以说是一种艺术。