调试和编程高手

业界总是有高手之说,高手成了程序员心中之偶像,成了程序员成长之目标。但是,现实中人们往往对自己所了解的程序员,很难认同为高手;人们反而对那些自己不了解的,甚至是道听途说的人会认作为高手了。高手,同武林高手一样,神秘之至。

  许多程序员都有这样的经历:无论自己编写什么很短很短的程序,一般是很难一次就能通过编译的;通过编译的其功能还不一定是正确的。我在很早就注意这样现象了,开始的时候,我还不信这个邪,还试着编写程序看看自己能否一次能否编译成功,为这个事还和别人打过赌呢!这当然是年轻时做过的事了。后来我渐渐明白了,编程出错是编程的一个重要的部分!出错是正常的,不出错才是不正常的。出错怎么办?当然是改错啦!不知道错在什么地方怎么办?当然是调试啦!调试于是和编程相依相伴了。程序员不但要会编写程序,还要会调试程序。

  程序出错一般有:未定义、语法、运行出错三个方面。

  1、未定义

  未定义往往是程序员的忽略定义或定义后名称与定义不一致造成的。

  1)要避免忽略定义这个问题,程序员首先要养成严谨工作的习惯:“先定义,后使用”。

  2)解决定义名字与使用名字不一致问题,程序员在对函数名、变量名、文件名、数据库名、表名、字段名定义的时候,不要信手拈来,象不花钱似的任意取名。一定要定下心来慢慢地斟酌,这个名字自己不但要能懂能记得,别人一看也要能懂能记得。程序员可以假设自己定义一个变量就要花出去100元钱,如果别人看不懂就要另外支付200元。有了这种名字的“有偿使用”,这样程序员就不可能乱取名了。长此以往,在使用这些名字的时候程序员就会有行云流水感觉,而且很少出错。

  2、语法问题

  1)新手编程走一步一个跟头,走两步两个跟头,主要是对语言的语法不熟悉,丢三拉四,关键字拚错等。这种情况不可怕,多看看语法说明,多改改程序就会对语法越来越熟悉了。

  2)老程序员语法问题出现较少。但是,很多情况下程序员在使用新语言编程序的时候,会采用老语言的语法,反之亦然,导致出错。例如,某人先使用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等调试工具,来调试程序,他们会编不会调。我们很难想象不会调试的程序员是如何编程的,调试对于程序员如此重要,以致于可导致出“不会调试的程序员就不是程序员”的结论。

  现在的开发语言具有功能丰富的调试命令。无论用什么设计语言调试,你只要注意掌握以下几个命令或操作,就能入门调试了:

  1、 运行程序

  2、
设置断点、取消断点

  3、
运行到断点

  4、 单步跟踪(setp
into)

  5、 单步执行(step
over)

  6、
显示变量、对象、源程序

  7、 退出调试

  你可以按此去寻找相应的命令和操作,并熟记于心中!此法必有大用。

  通过调试,程序员可以学会如何运用断点、如何最快地找到可疑语句,如何很迅速地找到问题所在从而改进程序。而不断地调试,使得程序员不停进行调试操作,变成了操作高手。调试内容可以说千变万化,技巧也多多,关键看程序员的积累。例如,循环语句调试的技巧、同步异步调试的技巧、中断调试技巧、外设调试技巧、数据库调试技巧、边界调试技巧、例外调试技巧、屏蔽法调试技巧、替代法调试技巧、接口调试技巧等等。

  调试象开车一样,不会开的时候,程序员有恐惧感,会开了以后,程序员特别想调,开多了,程序员越发老练,调试操作越来越快、对问题发生的原因和纠正方法也熟记于心中,技巧也油然而生,积累越来越多。

  好的程序员不但调试自己的程序,而且会帮助其他程序员解决调不出来的程序的问题。程序员在帮助别人的时候,更能尽显调试才华,成为真正的调试高手。

  调试总的目标是为了纠正程序的错误。但是,调试也可用于其他的用途。例如,我经常会先把函数的调用语句给写好,但是不写函数体,这样每次编译都会出现函数没有发现的提示。我不写函数体的目的,就是让每次编译的时候提示我还有多少函数没有编写。让我对这个函数加深印象,给我有时间思考这个函数如何编写。当其他语句编写完后,我再一个一个把没有编写的函数内容补上,这个时候编写就快的多了。有的时候,我还喜欢看到几十条上百条的出错提示,然后,我感觉于一个改错就能消灭几十个错误的快感之中,然后再改再调,直到无错。调试成了我娱乐编程的一部分。

  通过调试你也会发现:编程水平直接影响到调试。如果程序很具有模块性,调试起来就很快,几个或十几个单步执行就会到达程序的任何地方,如果程序本身逻辑性不强,变量命名不准确、一个函数内语句有数十条数百条,那你几百个单步执行都到达不了你想要达到的地方,程序调试起来就会很麻烦,而且不容易定位出错的地方。所以调试高手往往会改进自己的编程,使得编程水平日益提高,成为编程高手。

时间: 2024-11-09 00:29:42

调试和编程高手的相关文章

程序员修炼指南——引导你成为真正的编程高手

@程序员修炼指南——引导你成为真正的编程高手 评,这是一个指导方向,不一定是你自己的目标,但如果这些你都做到了,那还有哪些是不能做到的? 前言 你是否觉得自己从学校毕业的时候只做过小玩具一样的程序?走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校课程总是从理论出发,作业项目都看不出有什么实际作用,不如从工作中的需求出发) 建议: 不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至少10年通用. 回顾一下历史,看看历史上时间线上技术的发展,你才能

如何成为编程高手

Java书籍 java编程思想 Java语言程序设计 成为一名编程爱好者需要经历以下几个阶段: 第一阶段: 此阶段主要是能熟练地使用某种语言,最好是当下比较热门的语言,如:C#.Java.C或C++等等,当然也包含其他的语言,这就相当于练武中的套路和架式这些表面的东西. 第二阶段: 此阶段能精通某个平台(如.NET平台.Java平台等等)的Web技术或GUI窗口技术(Windows GUI),到达这个阶段后,也就相当于可以进行真实散打对练了,可以真正地在实践中做些应用. 第三阶段: 此阶段能深入

李雪:女生也能当编程高手

来源:http://burl.cc/haGmN 在强手如林的编程大赛中夺冠,被戏称为代码界的“女神”李雪:女生也能当编程高手 本报记者 原春琳  <中国青年报 >(2013年07月01日     06版) 历时约两个月的第二届微软“编程之美全国挑战赛”于近日落下帷幕.从来自清华.北大等各大高校的1.3万多名选手 中杀出重围,再到最后60人的巅峰对决,出乎所有人的意料,在这个男性向来占据绝对优势的领域,最后夺得冠军的居然是一名女生——北京邮电大学(以下简称 北邮)大三学生李雪. 此消息一经公布就

编程高手解读什么是NodeJs

编程高手解读什么是NodeJs?    首先在搞清楚什么NodeJs之前,我们先来聊聊JavaScript,只要做过开发的人都应该知道JavaScript是目前最为流行的前端(客户端)脚本语言,JavaScript在Web项目中的使用率可以说是99%以上,不夸张的举个例子:"现在你打开的100个网页中,有99个都使用了JavaScript".那么为什么JavaScript这么火,其实原因非常非常的简单,JavaScript出现赋予网页新的生命力,从一开始它只为表单验证而生,到现在百万亿

读《编程高手箴言》笔记一

最近无意在朋友的书柜上翻到一本<编程高手箴言>,之前对带有“高手”.“速成”.“7天成才”这样字眼的书籍都有种偏见,总觉得都是些不靠谱的吹嘘.但这本书不一样,翻开大致浏览一下,感觉写得挺中肯,挺实际,于是拿回家有时间就翻翻.并将书上感觉写得好的地方摘录下来. 正确的入门方法 工欲善其事,必先利其器,要想成功,没有一个艰苦的过程是不可能的,所以一开始的时候就要有耐心.如果你准备花5年的时间成为高手,那我敢说你基本不用等到5年,你只要有这个耐心就足够了,你可能2---3年内就达到了目标.但如果你想

给程序员的五点建议--如何成为编程高手并以此创业

写在前面:此篇文章出自雷军之手,是他为软件开发2.0技术大会准备的演讲稿,但由于某些原因没有派上用场.这里跟大家分享下,对我们程序员来说还是大有裨益的. 每个IT企业,尤其是初创企业,非常苦恼:找不到好的程序员.现在大学.软件学院及各种培训机构,每年培养几十万的程序员,毕业的每个人都有同样困恼:找不到好的工作.问题出在哪里呢?其实,企业需要的是不是刚会写程序的人,需要来了就能干活的人,尤其能把活干好的人.而刚毕业的大学生多半刚学会如何写程序,的确很难企业需求. 企业到底需要什么样的程序员,一个刚

如何成为代码编程高手[转]

有些事总是说起来简单做起来难.养成良好的习惯,是在我们编程中最重要的.在学习的时候我们往往注重的是如何快速的理解例子,练习的时候没人强迫你要些的如何如何规范.开放式的,更何况我们在练习的时候大部分是拷贝,编译执行看结果.正真的自己去一行一行认认真真的去敲的人很少,都想速成.囫囵吞枣,都消化成半成品.如果是大学学习,你见又哪位老师说要把代码写规范.应为他们也基本不写代码,何来规范? <ignore_js_op> 所以一开始我们要重点强调:1.代码书写规范,学习或写代码之前一定先去找本代码规范看看

如何才能成为一个真正的编程高手?

大家都知道想学好破解,必要先懂编程与汇编,而学编程一般要经历下面六个阶段 第一阶段 此阶段主要是能熟练地使用某种语言.这就相当于练武中的套路和架式这些表面的东西. 第二阶段 此阶段能精通基于某种平台的接口(例如我们现在常用的Win 32的API函数)以及所对应语言的自身的库函数.到达这个阶段后,也就相当于可以进行真实散打对练了,可以真正地在实践中做些应用. 第三阶段 此阶段能深入地了解某个平台系统的底层,已经具有了初级的内功的能力,也就是“手中有剑,心中无剑”. 第四阶级 此阶段能直接在平台上进

编程高手解读什么是NodeJs?

首先在搞清楚什么NodeJs之前,我们先来聊聊JavaScript,只要做过开发的人都应该知道JavaScript是目前最为流行的前端(客户端)脚本语言,JavaScript在Web项目中的使用率可以说是99%以上,不夸张的举个例子:"现在你打开的100个网页中,有99个都使用了JavaScript". 那么为什么JavaScript这么火,其实原因非常非常的简单,JavaScript出现赋予网页新的生命力,从一开始它只为表单验证而生,到现在百万亿的网站使用JavaScript来做的各