bug调试过程简单分析与小结(一)

bug调试过程记录

  

   第一,如何快速定位bug具体位置。

 

         1,首先应进行模拟被描述的bug,把bug在本地显示出来。

 

         2,如果在模拟的过程中,后台的控制台报错,则镇定地把报错信息读完,一般根据意思就能够找到问题的原因。

 

         3,如果后台控制台没有报错,则需根据具体的bug去找相应的位置(js,html,路由,controller,service,dao)。

 

         4,问题,怎么快速找到具体问题的"大"位置?一般来说,firefox的f12可以清楚看见,请求与相应,直接找到相应的controller及service和dao,如果熟悉项目则直接定位,如果不熟悉则ctrl+h定位。页面的话,可以利用ctrl + h 快捷键,进行快速定位,过程中也要ctrl+f配合使用。

 

        5,问题的具体位置,有时候会利用log.out和System.out进行打印,细心看打印出来的是什么。js则可以利用alert()进行弹框,一定要细心看弹出的是什么类型,对象还是普通变量。

 

        6,熟悉以上几步,快速定位问题的具体位置。

 

 

    第二,如何分析bug原因。

 

       1,首先,如果基本知识足够扎实,一般一眼就能够看出来。比如AngularJS表达式取的是,字符串;javascript 中 var time = new Date(),此处time是一个对象,在把这个对象赋给其他变量时,这个其他变量更改一些这个对象中的属性,那么原对象的一些属性也被更改,一句话,类似于浅拷贝概念,javascript中true和false不能直接进入if中判断,var endState = false,if(endState == 'false')这是有问题的;mysql 5.5以上的版本,maxvalue是个保留字,mysql的key也是保留字,是索引的意思,还有一些java基础的类型转换知识,long,bigdecimal等,有些时候是不允许转换的。还有java的toString(),valueOf(),强转String这些的区别,以及采用其中一个的会存在什么潜在问题,比如toString()需要非null,valueOf()底层源码返回的是什么?

 

      2,如果没有一眼看出,则一般是跟需要,先想一下,你要什么?然后利用控制台打印或alert()弹出,看看值是否是null,或者值的类型,值得本身是否是你想要的。如果不是,则分析为什么不是?解决问题的前提是找的问题的原因。

 

      3,如果还没有分析出bug原因,则需要debug进行分析。一步一步来,chrome找到js文件,进行debug分析。后台也可以进行debug进行分析。firefox仔细分析请求与响应。

 

      4,以上是基本步骤和基本知识去定位及分析可能的bug原因。但这都是基于当前项目的,项目的逻辑一定要正确,面对某个bug,仔细想想需要是什么?需求才是指导我们该如何做和做些什么。因为有些时候,逻辑也会出现漏洞,需求也会出现模棱两可。

     

 

    第三,分析出bug原因,如何解决?

 

      1,分析出bug原因后,如果知识足够扎实,一般脑袋中直接有解决问题的办法,如果没有?则立即抽象自己需要的关键字,进行搜索,千万别自己苦思,想找个方法解决,如果有一般早就想到了,这些东西,只是不知道而已,没有什么的。

 

      2,抽象出的关键字,一定跟自己的需求相关。也就是对于解决这个问题,你需要的是什么?

 

      3,比如bug,展示纯数字时,将框给撑爆。

 

          原因:span和div在接受输入纯数字和纯拼音时,将会撑爆容器,而不会自动换行。

          错误做法:自己去写style,写个可以自动换行的。如果知识扎实,可以。

          正确做法:抽象出关键字,span  自动换行  。搜索。一般都可以找到解决问题的原因。

          分析:难道这个也要自己苦思解决?其实很多东西都可以这样子做。理解学习是理解思想性的原理性的东西,能找到问题的原因已经证明一些能力,解决问题的效率,则是跟经验和熟练度有关,有些只是不知道而已,所以多分析多遇见不同的bug,自然而然就会分析和解决了。

 

     4,还有,就是大神也会有出现细节性的和不能解决问题的时候。所以不太明白的地方,就赶紧问。不知道怎么处理的时候,先思考,然后也去请教请教。

 

小结:

 

    1,熟练操作问题的具体定位步骤。

 

    2,分析bug原因。

 

    3,抽象出关键字,搜索解决问题。

 

    4,需求一定要明确。效率一定要高。

 

    5,上面过程分析的快捷键,如何分析,如何解决这些基本技能都要相当熟练。但熟练的前提是,得有这个意识。比如现实的问题,利用抽象出名词去分析。比如出现问题,脑袋立即会指导你该做些什么?这就是意识。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(exam)