什么是程序员最大的梦魇?毋庸置疑,这个答案就是bug!奋斗君作为一名工作9年的程序员,提到bug那也是一把辛酸泪啊!
想起当年因为加班改bug没有时间陪女朋友过生日,最后导致了分手,我也不至于单身到现在啊!(眼泪不争气的砸在了键盘上)
好在这些年和bug纠缠不断,也累积了不少解bug的方法,为了大家能避免步我后尘,在这和大家分享几个好用的解bug方式。
前言
首先我们解决问题前,要先制定好一个解决问题的流程,了解清楚这个问题是什么,然后就是分析要把问题处理成什么样,然后在分析这个问题产生的原因,最后在解决这个问题。
出现bug,不要立马怀疑是电脑出问题了,操作系统bug和框架问题,这里框架泛指广泛应用的成熟框架,公司自己做的除外。据我经验,99%的问题都是自己的代码逻辑问题,所以一上来就要检讨自己。
解决bug的方式
一:最小化定位
大家应该都能理解,就是用排除法尽可能把没有问题的代码排除掉,这里可以使用二分法排除,然后把有问题的模块拎出来,单独进行单元测试,所以代码的模块化解耦是非常重要的,解bug套路。
二:合理打log
很多正在运行的线上系统都没有办法给你断点调试的,这种时候合理打logo就非常重要了。有的人喜欢把什么内容都写进logo,这样导致logo文件巨大,几个g的logo了解一下,这里给大家推荐几个打log的建议:
- 按日期分文件
- 巧用分隔符
- 避免不必要的浪费。
三:旧版本代码比较
如果是新版本新出的bug,最好和旧版本进行比较,一般写代码都有版本管理,例如g的或s5n,合理利用代码比较功能,看看某个类或者什么方法新增了什么代码,删除了什么代码,这样比一比就可以分析出问题所在的解。
四:活用抓包
这类问题经常出现于前端后端PK中,由于现在很多框架已经封装了很多层,收发报文都很难通过断点进行查看,哪怕断点都会导致阻塞,影响调试效果。
所以通过抓包软件,例如wire、shacks,可以很方便地看到豹纹,然后拿着白纸黑字就可以看出是谁的问题了。
五:利用各种工具
因为不同的语言行业编程工具都有所不同,我仅列举我自己常用:
1.debugview
查看程序输入输出的内容的工具。
2.depend
查看程序dll依赖的工具。
3.the Jason dot com
在线Jason工具能做很多Jason相关的事情解.
4.Winhex
查看文件16进制的工具
六:活用搜索引擎
这里建议大家使用英语搜索Google或者是being,你会发现很多有价值的答案。如果是框架层的问题,恰好这个框架有上句号,尝试搜索该项目的意思,也会有很多意外发现。
七:求助大神
这里像我们的CSDN、知乎、或者奋斗君的交流群每天都活跃着很多大佬的,建议大家在求助别人的时候,不要把代码直接扔过去,起码你的问题自己尝试过的方法已经得到了什么结果,什么点解决不了,说清楚。别人的时间都是很宝贵的,充分尊重别人,才能得到别人的用心帮助。
八:套路本地化
如果是线上的项目,建议将关键数据当不到本地,当然很多线上数据库非常大,如果可能请导出的时候做一下筛选,把关键数据导出来。这种方法适用于刚上线不久试运行的项目,通常正规化管理的是不允许程序员直接接触线上数据的。
结言
好了,这是我自己总结的8个解决bug的方式,为了感谢大家一直以来的支持,我整理出了一套适合大部分人在学习和工作期间是都能用到的资料(c语言、java、python等编程语言的教学、配套练习题、学习路程图、进阶实战项目等)大家如果有需要可以+q群879132246。希望我的分享可以为大家提供到一些帮助!也希望大家能够继续支持我,奋斗君会不断更新更优质的内容!