解决一个平均运行一百万次才出现一次的bug

在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug?

作者给出了一个实际的例子,和解决方法。
1. 明确的辨析出问题现象。
异常,CoreDump,出现问题的时间点。这也依靠程序的日志,才能找到相关的点。
2. 明确触发问题的路径。
可能是一些相关的操作,比如,可能是用户做了什么操作。也可能是相关的环境出现的问题,比如,网络脆弱,突然断网,断电等。
3. 尝试重现问题, 这是最重要的一步, 一百万次才出现一次的bug, 不可能每次都这样来重现。
通过各种因素的分析,可能是网络,业务等等。发现一种能够迅速重现问题的方法。当我们找到了重现的方法以后,我们就找到了解决问题的入口。
因为我们在解决问题的时候,针对解决方案,我们也需要不断的来重试,直到这个问题不再出现。
4. 解决问题,借助工具,找到问题出现的原因。 通过开发工具(Eclipse,Idea,XCode等),通过内存的检查工具等。
问题分几种。
1. 业务问题,从异常的信息里就能看到。
找到业务的发生路径,就能重现,并解决。
2. 内存泄露问题, Java,C/C++都会有这样的问题
通过内存检测工具,找到泄露的对象。分析对象产生的代码,对代码做改进,避免泄露发生。
比如: java中最常见的内存泄露问题,有几种。 1. 一次加载了大量的对象到内存,占用了大量内存以后。导致不断的GC,进而导致业务不可用。 2. 在集合对象中,不断的加载了很多的对象。同时没有有效的移除机制。导致了内存不能被回收。系统不断的GC,导致业务不可用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值