对于大部分开发人员来说,你所看到的绝大部分BUG已经被别人修复并且分享出来了,这时候百度已经足以帮你
但是你也有可能会遇到一些稀奇古怪的Bug,这时候你就需要静下心来,好好的仔细研究一下了。下面,分享一下我偶然得到的心得体会。
我建了一个Java学习交流群,欢迎喜欢Java的各位大神小神前来学习交流,每天晚上群里面也会有大佬直播企业项目开发学习,更有各种项目案例供你自己学习哦,632119504
首先,找出Bug
换环境
换用户
换数据
换浏览器
换版本
换种操作
找到Bug之后,再搞清楚下面这几个问题:
这个BUG出现需要的环境是什么?
这个BUG之前没有,现在出现了,中间都动了什么?
这个BUG出现的情况是什么
什么样的神级操作才会出现这种Bug
找到Bug的问题,就可以针对性的解决了
下面主要再给大家列出一些常见的疑难BUG的诊断方法:
1.输出结果与预期不符,这种BUG一般都是由于代码逻辑错误造成的,如果能在开发环境重现,最好解决方法就是单步调试,设定每一步代码的预期结果,然后跟踪判断实际结果是否与预期结果一致,不一致的分析原因,如果在开发环境无法重现,无法单步调试的,可以采用添加输出日志的方式判断哪一步的问题。
2.系统异常报错,这种情况下需要提取日志,找出错误堆栈信息,这时候最重要的事情是要把堆栈信息看懂、看完整。这是很多经验不足的程序员常见的问题,就知道报错了,报的什么错,这个错代表什么一概不知。而且往往堆栈信息是一个套一个输出的,比如Java里面表象上看是一个NullPointer Exception,但是如果你看到底,就会告诉你到底是什么错误引发了这个NullPointer。
3.系统Crash,这个问题常见的原因是负载过高、并发过高、或者配置错误。最常见的就是内存溢出。这时候要首先排除配置错误的原因,主要靠查看Crash Log来分析原因,如果Crash Log没有有用的信息,就得排查硬件、内存、网络等方面的设置,看是否有配置错误的地方。再找不到就在测试环境用开发模式进行压测和调试。
4.系统响应缓慢,这种问题一般是系统资源不足,
给一个解决Java应用响应缓慢的方法
通过这些步骤,找出那些功能、那个方法、那段代码存在瓶颈和资源竞争,针对性的对这个地方进行改造就行了。
最后,如果某个地方出现BUG实在找不出什么原因,机谋用尽,那就上我们的绝招“小黄鸭调试方法(Rubber Duck Debugging)”吧。
Java学习交流群,欢迎喜欢Java的各位大神小神前来学习交流
1. 去买一只小黄鸭,黄色的小鸭子,一按就会嘎嘎嘎的那种,也可以用其他的玩意代替
2. 把小鸭子放到电脑屏幕上方面对着你,就下面这样的
3. 打开你出问题的那段代码,面对小鸭子,用手指着代码,一行一行的给它解释一下这行代码是干什么的,为什么这么写。
4. 现在知道问题在哪了吧?
不说了,我给我们办公室批发小黄鸭去了