许多程序员都有这样的经历:无论自己编写什么很短很短的程序,一般是很难一次就能通过编译的;通过编译的其功能还不一定是正确的。我在很早就注意这样现象了,也试着编写程序看看自己能否一次能否编译成功。后来我渐渐明白了,编程出错是编程的一个重要的部分!出错是正常的,不出错才是不正常的。出错怎么办?当然是改错啦!不知道错在什么地方怎么办?当然是调试啦!调试于是和编程相依相伴了。程序员不但要会编写程序,还要会调试程序。
程序出错一般有:未定义、语法、运行出错三个方面。
现在的开发语言具有功能丰富的调试命令。无论用什么设计语言调试,只要注意掌握以下几个命令或操作,就能调试了:
- 运行程序
- 设置断点、取消断点
- 运行到断点
- 单步跟踪(step into)
- 单步执行(step over)
- 显示变量、对象、源程序
- 退出调试
通过调试,程序员可以学会如何运用断点、如何最快地找到可疑语句,如何很迅速地找到问题所在从而改进程序。而不断地调试,使得程序员不停进行调试操作,变成了操作高手。调试内容可以说千变万化,技巧也多多,关键看程序员的积累。例如,循环语句调试的技巧、同步异步调试的技巧、中断调试技巧、外设调试技巧、数据库调试技巧、边界调试技巧、例外调试技巧、屏蔽法调试技巧、替代法调试技巧、接口调试技巧等等。
调试总的目标是为了纠正程序的错误。但是,调试也可用于其他的用途。例如,可以先把函数的调用语句给写好,但是不写函数体,这样每次编译都会出现函数没有发现的提示。不写函数体的目的,就是让每次编译的时候提示我们还有多少函数没有编写。让我对这个函数加深印象,给我有时间思考这个函数如何编写。当其他语句编写完后,再一个一个把没有编写的函数内容补上,这个时候编写就快的多了。