强中自有强中手 调试高手和编程高手[1]
强中自有强中手 调试高手和编程高手[1]
]业界总是有高手之说,高手成了程序员心中之偶像,成了程序员成长之目标,
强中自有强中手 调试高手和编程高手[1]
。但是,现实中人们往往对自己所了解的程序员,很难认同为高手;人们反而对那些自己不了解的,甚至是道听途说的人会认作为高手了。高手,同武林高手一样,神秘之至。许多程序员都有这样的经历:无论自己编写什么很短很短的程序,一般是很难一次就能通过编译的;通过编译的其功能还不一定是正确的。我在很早就注意这样现象了,开始的时候,我还不信这个邪,还试着编写程序看看自己能否一次能否编译成功,为这个事还和别人打过赌呢!这当然是年轻时做过的事了。后来我渐渐明白了,编程出错是编程的一个重要的部分!出错是正常的',不出错才是不正常的。出错怎么办?当然是改错啦!不知道错在什么地方怎么办?当然是调试啦!调试于是和编程相依相伴了。程序员不但要会编写程序,还要会调试程序。
程序出错一般有:未定义、语法、运行出错三个方面。
1、 未定义
未定义往往是程序员的忽略定义或定义后名称与定义不一致造成的。
1) 要避免忽略定义这个问题,程序员首先要养成严谨工作的习惯:“先定义,后使用”。
2) 解决定义名字与使用名字不一致问题,程序员在对函数名、变量名、文件名、数据库名、表名、字段名定义的时候,不要信手拈来,象不花钱似的任意取名。一定要定下心来慢慢地斟酌,这个名字自己不但要能懂能记得,别人一看也要能懂能记得。程序员可以假设自己定义一个变量就要花出去100元钱,如果别人看不懂就要另外支付200元。有了这种名字的“有偿使用”,这样程序员就不可能乱取名了。长此以往,在使用这些名字的时候程序员就会有行云流水感觉,而且很少出错。
2、 语法问题
1) 新手编程走一步一个跟头,走两步两个跟头,主要是对语言的语法不熟悉,丢三拉四,关键字拚错等。这种情况不可怕,多看看语法说明,多改改程序就会对语法越来越熟悉了。
2) 老程序员语法问题出现较少,
资料共享平台
《强中自有强中手 调试高手和编程高手[1]》(https://)。但是,很多情况下程序员在使用新语言编程序的时候,会采用老语言的语法,反之亦然,导致出错。例如,某人先使用C语言,后使用VFP.当用VFP编程的时候,往往习惯性地在语句后面加上“;”,这导致VFP语法出错。当熟悉VFP后,再编写C语言的时候,往往在语句后面忘记加上“;”,导致C语言语法出错。类似常见问题如:IF语句后面表达式是否要加“()”等,for 语句,while 语句,case语句在不同的语言的语法都有可能不同。另外,不同数据库中的SELECT 、INSERT、语法都有一些不同处,这些不同之处,往往让程序员不知所措,老是要停下来思考一下,现在用的是什么语言用的是什么语法。3、 运行问题
定义、语法这些都是显式出错,相对好解决。但是运行中出现错误就五花八门了,我试着归纳一下:
1) 运行中程序突然中断了并退出了。往往是内存出错!可查变量、指针是否越界,指针是否为空等、例外没有处理。
2) 环境问题
例如,数据库密码错导致数据库打开不了、要打开的文件不存在、参数定义错,参数表为空,参数表没有缺省值等。
3) 程序的输出的不是自己的预期结果
往往是程序逻辑和算法存在问题。
4) 程序不停地运行没有停止的迹象
查一下循环的条件表达式是否永真、导致死循环。
5) 程序无法退出
程序乱了,导致内存错,覆盖了退出指令!
6) 程序运行了很长时间才出现了错误
累计误差、数据原因造成的错误等。
出错是必然的,如何找出错误,有些人编写C语言的人只会用在可能出错的语言前后,通过显示语句print来判别出错的原因。他们不懂debug、sdb、dbx等调试工具,来调试程序,他们会编不会调。我们很难想象不会调试的程序员是如何编程的,调试对于程序员如此重要,以致于可导致出“不会调试的程序员就不是程序员”的结论。