厉害程序员的标配!
解决。 曾经在360带几十人技术团队,同时研发几条业务线。参与过的产品,日活过千万的有一款,过百万的有三款。 这个过程中各种稀奇古怪的bug见过不少,也一一解决了(不然估计就要滚蛋)。 分享下我的debug经验,希望对大家有用: 1.日志Log尽可能详尽 编程领域流传着一句话:必现的bug,都不是bug。 因为好复现,就容易解决,代码一直跟下去,或者看看堆栈信息,很快能定位问题。 真正困难的是偶现bug,甚至那种概率千分之几,但后果严重的bug。解决他们就需要详细的日志Log,尤其是关键点上的信息,非常重要。 2.google要用好 程序员+google=好的程序员,这句话真的没错,很多技术bug,当你毫无头绪之际不妨google下,可能不少人遇见过。 当然,最关键的是搜索的关键字,这取决于你对bug现象的描述,越言简意赅搜索到的信息反而越多。 3.排除法 这个方法说实话不提倡,但很多时候实在束手无策之际不妨用用,用法也很简单,当你不确定哪一块新增代码引入问题,就尝试注释一部分代码看看程序是否OK。 不行再换另一部分代码注释掉,很快你就可以缩小bug的查找范围,进而定位问题。 4.模拟用户环境 可以采用一些工具来模拟前端或者后端,制造假数据、假操作。有了这些工具之后,把你怀疑可能出问题的情况模拟一遍,观察是否会出问题。 其次,遇见一些极端情况,比如怀疑是多线程/多进程死锁,那不妨在某个进程/线程写个死循环看看bug是不是就出现了,当然做这种操作千万千万别给忘记了,提交了,那就完犊子了。 5.记录曾经解决过的bug,并简历索引 其实很多bug会变着花样反复出现,俗话说好记性不如烂笔头,把解决过的问题记录下来,并且做好索引,下次遇见可能相同的问题,先检索一遍,搞不好就找到答案了。 6.多看官方文档 特别是引用了第三方代码或者是开源代码导致的问题,官方文档对应的部分反复看看,可能问题就解决了。 7.引入工具,放大问题 比如很多线程注入的工具,你开启后,但凡是一点点依赖线程顺序的bug都会从偶现变为必现。
这个相当于主动把代码运行环境变成地狱模式,比如你的一个线程的结果依赖于另一个线程的输出,但你忘记加同步代码了,不过大部分情况另 (编辑:南通站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |