改BUG的技巧

原创 2017年02月23日 20:22:17

改BUG的技巧

改BUG的技巧


那天同事问我你有什么突出的地方,我想了半天,觉得我最突出的地方就是改Bug比较快,所以今天我就对改Bug的技巧做下总结,欢迎补充。

途径

重启试试

作为人生四大真理(多喝点水,重启试试,喜欢就买,不行就分),重启有时候能解决很多莫名奇妙的bug,不过大多数没什么用,现在我开发的帮助中心充分能体现重启的威力,经常访问不到,但是重启下就好了。

断点调试和日志

断点调试对付逻辑上的bug非常有效,偶尔也能对付高级bug。咱们组基本上都会用断点调试,不像前两年我面试别人的时候,最常规的问题就是你平时怎么调试,几乎所有人都说system.out。啰嗦一句,不知道大家有没有发现,作为一个程序员,开发效率主要是被各种莫名其妙的Bug拖累下来,有时候你发现一个功能写了一天都没什么进展,总有那么一两个bug是你无论如何都过不去的。

面向谷歌编程

这个主要是用来对付你从来没有见过的bug,或者报错信息是你从来没见过的。谷歌大多数情况下能帮你找到正确的答案。与之类似的还有面向百度翻译编程,实在懒得看一大段出错信息,可以贴到翻译工具里面,虽然很少有提示信息超过一句话的。上次一个哥们给我打电话,说我们的服务器启动不了了,你帮我看下吧,我说行啊,你把日志发我吧,他就发了我一小段话,英文的,大致意思是密码过期了,非常简单。我让他改过密码就解决了。。。

找别人帮你看看

这个途径也非常重要。记得刚工作的时候,我有个编译错误无论如何都解决不了,我找我师傅过来,我师傅看来半天说,你的逗号是中文的。我说不能吧,他让我把那句话粘到记事本里,我一看,果然是中文的。顺便提一句,大家最好设置下自己IDE的字体,好的字体不仅赏心悦目,对于查bug也是非常有用的

心得

如果重启一次没用,那重启两次一样没用

对于发现不了问题的Bug,重启一次解决不了,那就不用再浪费时间重启了,再重启肯定也解决不了。这个道理我很早就想通了,但是总是心存侥幸一遍遍重启浪费时间。

如果你调试过了的地方没有问题,那很可能这一片代码真的没有问题

浪费时间的另一种途径,就是在这一块找不到问题,再来一遍,甚至两遍。最近印象比较深刻的就是上次有个同事遇到一个 神奇的bug,他从头到尾都没用过缓存,结果他的查询结果总是被缓存起来,我帮他解决的时候,他才发现,原来是别人在同一个配置文件里,开启的全局缓存

快速浏览异常栈,只看与你的代码/配置有关的地方

很多人看见一片异常头都大了,我也头大过,自从我知道这个技巧之后,我的头就没那么大了。Java EE的异常栈非常有特点,最有用的地方不是在最上面就是在最下面,我看异常栈的时候,喜欢从下往上看,所谓从下往上看就是从最下面的一个Caused By:xxx,这里是最根本引发异常的地方,有经验的人一看就能看明白异常种类。从这里看出的异常非常考研一个人的开发经验,这里的异常一般都跟框架使用规则有关。从上往下看异常,最容易找到自己代码里的异常,比如空指针啊,数组越界啊,都是在异常栈的最上端,这是最能指出你代码出问题的地方。

多用用排除法

对于久攻不下的bug,请先遵循心得一和心得二,然后再看这里。尝试着改变代码里的某些参数,修改某些配置,能帮你快速定位问题。在使用排除法的时候,大家一定要时时刻刻牢记心得一和心得二。今年以来遇到的最顽固的bug是springMVC和spring结合的时候,对于更新操作一直不能拿到数据库的写链接。调试这个问题的时,我先用Junit测试通过了service方法,发现单元测试的时候一直没有问题,一启动web容器就会出现这个问题,然后我就一直在改spring的配置文件,各种尝试都无法奏效,当时我就忘记了既然spring没有问题,问题肯定出在springMVC的配置上了呗,这个问题调了一天半,最后我干别的事情的时候,突然顿悟了,后来去网上找了找,最后还真是springMVC的问题,由于springMVC在调用链的上端,它也可以管理事务,导致spring无法管理事务,所以没办法开启一个写事务。

知识和想象力非常重要

技术都是相通的,你懂的技术越多,你对技术的理解越深,你越能找到Bug背后隐藏的东西。反过来,知识很可能变成我们的障碍,使我们变得自负,顽固,限制想象力,要时常提醒自己,莫要止步不前

其他

  1. 要学会使用IDE。这点非常重要。全文搜索和文件搜索是非常有用的功能,直接搜索能比你从一堆文件里找到你想要的快很多,IDEA的搜索功能非常强大。
  2. 重构时,最好使用IDE提供的工具,IDEA的重构功能也非常强大
  3. 对于由于自己疏忽,漏写了什么东西导致的莫名其妙的BUG,看异常栈能大致定位到你的问题,所以还是谨慎点,这个基本上也没有什么防范的办法
  4. Java EE是一种仪式感非常强的技术,换言之,某个地方该出现什么,虽然你不知道为什么要出现这个,但是最好像举行仪式一样让它出现,但是千万不要画蛇添足,这样就能保证你写的程序大差不差。
  5. 最好自己能明白自己写的是什么。这个看起来有点像废话,但是你调用其他人的东西的时候,最好读读API,如果没有的话,搜下。现在咱们用MAVEN,这个工具非常好的一点是能帮你把源码下下来,实在不明白的地方可以在人间的源码里打断点,跟着走。

如何修改bug(一)——bug的分类和定义

一.前言 我发现很多程序员都在改bug,总在改bug。但是很多人没有思考过什么是修改bug的正确方法,如何高效率的修改bug,如何避免改了一个bug又被测出另外一个bug(我称为连环bug);还有就是...
  • qiudw
  • qiudw
  • 2009-03-14 08:33:00
  • 1482

程序员如何快速高效的改 bug?改bug都有哪些技巧?

1. 这个BUG偶尔才能出现,或者只在特定的环境里面出现。 2. 不知道BUG是什么问题造成。 3. 不知道BUG该怎么下手解决。 如果遇到这样的问题可能好几天都不得其解,搞得人焦头烂额,这...
  • a236209186
  • a236209186
  • 2016-08-18 23:06:02
  • 1075

修改BUG心得

一、 1、写第一版时就杜绝这些的发生。 2、思维要开阔, 3、修改BUG,写代码的人都很厉害,不管是写界面还是底层。不要以人做的模块的难易来断定人。     二、 今天让项目经理找到些b...
  • chenyujing1234
  • chenyujing1234
  • 2013-01-14 22:06:52
  • 6739

程序猿如何快速高效的改 bug?改bug都有哪些技巧?

作者:依云 链接:https://www.zhihu.com/question/36438025/answer/139485672 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商...
  • qq_37166787
  • qq_37166787
  • 2017-11-27 19:51:18
  • 57

改BUG的技巧

改BUG的技巧改BUG的技巧那天同事问我你有什么突出的地方,我想了半天,觉得我最突出的地方就是改Bug比较快,所以今天我就对改Bug的技巧做下总结,欢迎补充。途径 重启试试 作为人生四大真理(多喝...
  • im_coming
  • im_coming
  • 2017-02-23 20:22:17
  • 246

存在的BUG及修改方法

以下贴出代码全部为修改后的 -----------------------------------------------------------------------------------...
  • aa62939859
  • aa62939859
  • 2017-03-21 21:47:32
  • 281

找bug的小技巧

原文链接:http://www.myexception.cn/other/1391145.html 1. 输出语句   代码调试的首要工具就是插入可靠地、真实的输出语句。当输出语句数...
  • u012858622
  • u012858622
  • 2014-03-24 14:54:33
  • 1777

今天改bug的心得和最近学习的一些体会

昨天晚上Dan给了我一个bug,说是我的写的代码有问题,需要fix,但是我的代码曾经是经过测试的,而且code review也过了,QA也测试通过了,他提出的一个概念Inbox File System...
  • u013325815
  • u013325815
  • 2016-07-30 11:11:00
  • 450

修改bug心得一

 今天让项目经理找到些bug,但都是无关紧要的,最主要是因为在作页面的时候,业务逻辑不是很清晰,需求描述的不好,所以我自己做起来也有麻烦,当然,不是我没错,只是以后我做项目经理,对以后自己下属的要求,...
  • NogamesNow
  • NogamesNow
  • 2006-09-05 14:02:00
  • 818

BUG修改高手一生

我不是一个BUG修改高手。        我想讲述一下我在杭州潮流信息公司(成都分公司)的一年时光(07/3-08/5)的想法与看法。在我刚进公司的时候,项目经理(樊龙军,刚升职的)叫我做一个图书管理...
  • freeprg
  • freeprg
  • 2008-06-06 05:33:00
  • 189
收藏助手
不良信息举报
您举报文章:改BUG的技巧
举报原因:
原因补充:

(最多只允许输入30个字)