怎么没有 A ?
调试,其实质是排错,与测试是两个不同的概念,后者用于发现错误(一般由编程者之外的人进行),而前者才是排除错误(是发现错误之后由编程者自己或维护人员解决的),因此调试的主要目的就是排除错误。排错是艺术技能,没有现成可学的必然手法。根据实践总结,不同的人有不同的排错能力,故此有人说这是天赋,不无道理。
不过,排错还是有一些基本方法的,总结起来,大致是如下三种:
1.蛮干法,硬追踪,主要是跟踪程序流程,监视其动作和数据变化,发现错误位置,有一定的运气,花费的力气较大;
2.原因消除法,从程序设计逻辑上分析错误的原因大概在哪里,再有针对性地通过增加数据、设置陷阱等方法定位错误;
3.回溯法,从错误处倒转查找,逐行排除,对小程序和少分支、少数据量的程序适用。
以上就是排错的基本方法,自己灵活运用,没有通法的。另外,编译信息也是很重要的调试手段,它能帮你把错误消灭在编码阶段,而不至于到运行时才出错。须知运行时才发生的错误,往往是逻辑问题了,有相当的隐藏深度,优秀的编程者都力求把错误消除在编译阶段。忠告:把编译开关设到最严格状态,不放过任何警告信息,直到编译时没有任何警告和错误;宁愿在编译时出错,也不要在运行时出错。
看看新手问的问题,绝大多数都是本可以在编译阶段检查出来的。
[ 本帖最后由 TonyDeng 于 2011-9-17 17:27 编辑 ]