寻找bug的方法

http://www.bjsxt.com/zixue/zixuezhilu_3.html 马士兵_解决Bug的方法

当你遇到一个问题的时候:

1:要仔细的观察错误的现象,是的,要仔细

有不少同学的手非常快,在编译一个程序的时候,报了一大堆的错误,扫了一眼之后就开始盯着代码一行一行的找,看清什么错误了吗?没有!

有的时候安装软件出问题了,一个对话框弹出来说出错了,马上举手问老师:“不得了了,出错了,出错了”。

“什么错误?”

“还没看呢?”

这都是典型的不上心的方法!请记住,学习编程并不是一件很容易的事情,自己首先要重视,要用心才可以。

在开发中,仔细观察出错信息,或者运行不正常的信息,是你要做的第一件事。

读清楚了,才能在以后的步骤中有的放矢,哭了半天,总要知道哭的是谁才成。

这里又分三种情况:

  A:错误信息读懂了,那么请进入2步:要仔细思考问题会出在哪些环节

  B:没读懂,愣是一点没看懂,进入第4步吧:google

  C:读了个半懂,有些眉目但是不太能确定,第2步和第4步结合着来。

 

2:要仔细思考问题会出在哪些环节(重要)

当你读懂了一个问题之后,要好好的思考这个问题可能会在哪些环节上出错。

一辆汽车从总成线上下来,车门子关不上!

哪错了?你怎么查?

当然是顺着生产线一站一站的查下来。

程序也是一样的,也是一系列语句完成后产生的结果。

写一个网络程序,总是发现服务器端打印不出接收的数据,有几个环节会出错?

仔细分析这个现象的环节:

客户端产生数据->按“发送”按钮->发送到服务器->服务器接收到后打印

这几个环节都有可能会出错:

有可能客户端根本就没产生数据,有可能发送按钮按下去后根本就没发出去,或者发出去的不是你产生的东西,或者根本就没连接网络,或者发送出去服务器没有接收到,或者接收到之前就打印了等等等等。

 

学着去这样仔细的分析程序的环节和这些环节可能会产生的问题,你的经验值定然会大幅度快速的提升,这样做很累人,但是一件事情如果做下来一点都不累的话,这个东西还有价值吗?在网页A输入了一个人的名字,提交到B,首先存储到数据库,然后再读出来,发现乱码!怎么办?当然是分析环节:客户输入->HTTP发送->B接收->存储到数据库->读出->展现到网页每个环节都可能出问题,怎么才能知道哪里出的问题?继续往下读。

 

3:如何定位错误(重要)

分析清楚有哪些环节之后,下一步就是定位到底什么环节出错了。

定位有以下三种办法:

A 打印输出,比如java的System.out.println(),比如js的alert(),这种办法常用,必须掌握

B Debug,可以参考我们的视频《坦克大战》,详细讲了Eclipse的调试。

C 删掉一部分调试一部分,也就是去掉一部分的功能,做简化,然后调试剩下的功能,JSP和JavaScript常用。可以参考我们的视频《BBS》等

这些我说的比较简单,详细了解的话请关注以下我们的视频吧,在近期会逐步的将一些知识点的视频进行免费的公布,http://www.bjsxt.com/download.html

 

4:如果还不行,google吧

还查不出来?恭喜你,你遇到的错误是值得认真对待的错误,是会影响你学习生涯的错误,问一下google或者百度吧。照着下面的方法查查看。

 

一般来讲,搜索引擎可以搜到各种知识点,我曾经跟同学们开玩笑说:“学会了怎么google或者baidu,其实没必要跟老师学了,自己全都搞懂了,尚学堂是没必要来的。”当然,只是玩笑,培训的作用有三个:

A:系统化知识

B:真实项目锻炼经验

C:少走弯路,节省时间

不知不觉开始做广告了,请原谅,处其位谋其事,总得为尚学堂说点什么:) 

言归正传,如何查搜索引擎?

先精后粗,首先先进行尽量精确的查找,比如一个错误,SocketException,你怀疑它是在connect()方法出的问题,那么当然是选这样的关键词java connect SocketException

先中后英,本着以解决问题为主的想法,练习英文还是先放在一边吧,首先应该在中文网页中查询,还不行的话,搜索英文的吧,最近的尚学堂课程中会带大家阅读英文的书籍。有很多东西就像一层窗户纸,远看灰蒙蒙怪唬人的,你壮着胆子一捅,它就破了。阅读英文的书籍就是如此,不是想象中的那么困难:)宁可在沙场上战死,也不能被吓死不是吗:)

信息筛选,搜索出来的结果不见得能够完全匹配,建议大家多阅读前几页的搜索结果,多打开几个网页看看,不过,我的经验是超过3页一般就没意义了,所以超过3页还没有找到合适的答案,或许应该调整一下关键词,或者放粗整个搜索的结果了。

经常的进行知识难点的查询,如果一个问题牵扯的面比较广,就干脆到网上搜索一些相关的专题,比如“java 乱码 mysql”“oracle 创建用户”等等,如果有必要,不要犯懒,勤动手写一些小小的测试程序,来弄明白知识点的细节。这也是涨知识的重要的途径。

 

5:什么?还不行?那么就BBS吧

如果实在还不行,就到BBS上面问一问高手吧。到哪个BBS上?google或者百度不就行了么:)关键词“java论坛”“java bbs”然后在搜索结果里好好的看看那些活动频繁的论坛,以后就是你经常光顾的地方了。http://community.csdn.net就很不错。向别人提问是非常需要技巧的!曾经有人问我这样的问题:“请问如何才能学好java呢?”这个要求太泛泛了。 还有人给我一段代码甚至jar包也寄过来,然后说老师的我的代码中有个错误您帮我查查:(我没有办法去花大量的时间建立环境去调试一个还不知道存在不存在的错误!还有人在BBS上问这样的问题:“是否有人能帮我完成一个完整聊天的程序?请帮我写一个登陆模块吧!”这个要求有些过分了,有人帮你做是你的运气,没有人帮你是正常反应。向别人提问,应该首先确定你已经做了自己应该做的事,简单说是我前面列举的1,2,3,4步你都作过了,然后再求助于人。不要没有经过认真思考就草率的向别人提问,自己也不会有长足进步的。那我该怎么样向别人提问呢?在google或百度搜索《提问的智慧》,你会找到答案。在这里我给出一个链接http://community.csdn.net/IndexPage/SmartQuestion.aspx,磨刀不误砍柴功,先花点时间去阅读一下吧。得到别人的回答,要懂得感恩。不需要去写信感谢,不需要支付费用,不需要那些花言巧语,做到下面这一点就够了:

当你逐步成为高手的时候,要回答别人在论坛上提出的问题,有时间有精力的前提之下!

6:还解决不了?问老师吧,这个只能是在你参加了培训的前提下了。

7:还解决不了?天哪,是不是思路从根上就搞错了?写信给我,让我也学习一下,共同进步吧。mashibing2004@sina.com

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值