程序猿解决BUG之总结

今天看到一遍博文(老程序员解Bug的通用办法),提到程序猿解决BUG的思路和方法,结合自己的经验总结一些;对待BUG,广大程序猿态度不同,解决方法也不同,各人有各人的法宝,但总结一下,希望对新入行的同学有所帮助!先来张搞笑图轻松一下(IT人员对待BUG的反应)^_^
这里写图片描述
PS:图是网上扒的

  1. 查异常日志
    最直接的方式就是查日志,尤其线上问题,第一步先看是否有异常日志。包括日志文件和日志系统,比如ELK中存储分布式系统日志;很多时候异常日志就能反应出问题的根本原因;
  2. 查调用链信息
    如果日志看不出问题,可以查调用链信息,有一些问题可能是业务问题,这就需要对业务流程较熟悉,根据用户的ID,订单号等一些关键信息,结合业务流程和数据库帮助定位和排查问题;
  3. 问题(BUG)重现
    如果日志没有反应出问题,那么下一步可以在环境上进行重现,重现过程还是要借助日志信息,不过这时候主要观察的是实时日志信息(线上环境一般要把日志级别进行下调整,比如调成INFO级别输出日志,当然记得解决问题后不要忘记把日志级别调回来~),甚至可以借助一些代理工具截取请求码流,辅助分析问题,码流主要用于分析用户请求及请求参数
  4. 本地环境测试或通过IDE-debug
    大部分问题通过以上方法或手段都能定位到问题,那么还有部分问题可能就需要在本地环境进行重现或通过IDE进行DEBUG,也可以通过远程调试方法定位问题,不过远程调试需要开启远程调试端口且要保证远程调试应用的版本和本地代码版本一致;
  5. 增加日志
    如果本地调试无法定位到问题,需要借助测试环境或线上环境的,但是原有日志无法辅助定位问题的,那么只能增加日志,然后打包发布到测试环境或线上环境测试以重现问题
  6. 分析代码
    也有人称之为小黄鸭调试法,小黄鸭不懂程序,所以我们可以向他解释每一行程序的作用,以此来激发灵感;其实说白了就是跳脱程序猿的固有思维,以另一个角度去审视代码寻找BUG
    这里写图片描述
    PS:图是网上扒的
  7. 排除法
    还有一种方法就是排除法,初步排查,有点像医生看病,缩小问题范围以定位问题;
  8. 环境问题
    很多时候遇到一些个人感觉比较诡异的问题的时候,一般就是这个问题折腾了你很长时间了仍然没有解决,那么很有可能跟环境有关,比如maven缓存,编译问题等等,可以尝试更换环境试试

猜你喜欢

转载自blog.csdn.net/luoyoub/article/details/80607687