For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
bug问题在许多软件开发项目中或多或少都是会存在的一个问题,而今天我们就通过案例分析来简单了解一下,bug问题调试都有哪些常用方法。
调试是一门科学,而不是一门概率学,你需要理解整个系统,才能够进行调试。有以下方法可以帮助你理解这个系统:
阅读手册:阅读需求设计文档、产品文档、使用手册等
仔细阅读手册的每一个细节:说不定解决Bug的方案就在某个段落里
掌握基础知识:后你总是要看源码的,至少你要掌握相应的编程语言把
了解工作流程:从整体的角度来观察,而不是做井底之蛙
可以说,理解系统的终目的就是为了了解工作流程,了解了工作流程,你才能够从整体的角度来观察,不然就像井底之蛙,以为问题一定出在自己这个模块,而其实问题是在上游的某个模块里。这一点,和《程序员的思维修炼》中提到的,“从整体进行思考”的观点不谋而合。
检查插头
这里当然不是让你去问人家插头插了没,插头在这里是泛指一切让产品正常运行的基本要求。这些基本要求通常我们都认为理所当然是正常的,可事实有时并非如此。
比如你的一个系统,需要在配置界面配置白名单,不然上游的请求就会被拒绝,那么当出现问题时,你应该先去检查一下这个白名单配置了没,因为对方有可能是个新手。
甚至当出现一些不可理喻的错误时,你要去软件的运行目录下,比如Tomcat的webapps目录,看看软件包是不是完整。
当你替换新代码上去后,发现Bug依然存在时,不妨上去看看正在运行着的,是不是还是旧代码。
书中把这条规则放到了倒数三条,我这里把它放到二条,原因很简单,通常我们在发现Bug或者别人跟自己说这里有Bug时,心里都会慌,都会紧张,所以不妨先检查一下插头,缓解一下自己紧张的心情,同时也强迫你从整体的视角进行观察,不会局限在一个小模块里。
重现失败
这几乎是一个下意识的动作,就算你之前没读过这本书,在遇到Bug时,你也会去尝试重现它,原因很简单:
重现失败让你可以观察失败发生时的上下文信息,进而找到失败的原因
重现失败让你可以判断是否已经修复了问题
有些问题很好重现,而有些呢,却是要在特定的输入的情况下才会出现的。
我们犯的绝大多数错误是在重现的方式上,作者对重现提出了两条原则:
模拟失败发生的条件,但是不要模拟失败的机理,因为你认为的导致失败的机理很可能是错误的。举个例子,你认为是高并发导致的bug,于是你模拟了高并发的环境,问题重现了,然后你就说是高并发导致的,其实呢,只不过是高并发提高了问题发生的几率。
只影响错误发生的频率,不影响错误发生的方式。其实高并发的环境可以用来提高错误发生的频率,只不过你要在问题重现时,要找到相应的日志信息,然后定位出问题发生的原因,而不是直接认为就是并发导致的。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。