本人七年多编程经验,了解互联网和编程相关知识,欢迎关注本人头条号。
对于难以重现的bug,关键要找到问题的本质,尤其在出现一些bug完全没有思路的时候。这里说下我解决相应问题的手段。
分析清楚问题,即找到bug产生的后果。这一步非常重要,也是后面找到问题产生原因的目标。如是产生了崩溃,还是对数据的增删改查出现问题,使最终的数据出现非预料的结果,有时暴露出的问题只是表象,通过抽丝剥茧,层层分析验证找到真正的问题。
列出会产生问题的模块,重点怀疑的模块,然后逐个分析,直到确认。注意不要由于思维惯性想当然遗漏谋个产生问题的模块,很多时候对代码非常熟悉后单单排查重点怀疑的模块就可以找到问题根源。
原因假设和验证。这点需要一定的经验,而且也是解决类似问题的主要手段。像题主举的例子,可以猜测下是否正式环境数据问题,代码中对条件判断不能覆盖这样的情况,验证可以找到相应订单数据加以测试。
日志源码,对于后台电销外呼程序日志非常重要,往往是很多线上问题解决的重要线索。
上下文排查,实在没思路可以通过定位影响的代码位置上下文回溯。
当然源码,有些时候一时线索不够、难以解决的不太重要的问题,可以在代码层次加以防护,防止产生更大影响,然后通过追加日志,以确保下次相应问题触发时,能捕捉到足够有用的信息。
以上是本人处理的主要方法,希望对你有用。
欢迎大家留言交流。