代码没有任何改动,为什么程序执行会有Bug?

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 工作中经常遇到开发不同的版本,如版本5.1、版本5.2,5.2版本是在5.1版本上的升级,会修改已有几个模块的功能或者新增功能。但对于其中一个模块M,没有做任何修改,奇怪的是,为什么5.2版本的模块M会有Bug?

题记

工作中经常遇到开发不同的版本,如版本5.1、版本5.2,5.2版本是在5.1版本上的升级,会修改已有几个模块的功能或者新增功能。但对于其中一个模块M,没有做任何修改,奇怪的是,为什么5.2版本的模块M会有Bug?

如题记,工作中经常遇到的场景。前几天排查问题,我也越到了同样的问题,明明A插件模块是较基准模块没有任何代码改动。但发现新版本下运行时,没有在缓冲磁盘下生成缓存索引和缓存文件。排查了很久,终于真相大白。

特将排查方法总结如下:

最初始,打开控制台(前台)日志,看出Bug的地方。并且通过配置文件,打开日志开关,确保运行能看到最全的日志。由于我们提供客户的环境,默认不会打开后台日志的,这点也非常关键。

一、确认新模块较基准模块有无任何改动。

最原始、最有效的方法直接通过BeyondCompare软件对比两个模块的所有文件,确认是否有改动。

二、有改动,则在改动的地方细细排查。

改动的地方无非是本版本新增功能,或者改动功能。然后再确认上面的Bug是否是改动引发导致。

三、无改动,则从相关调用模块逐个排查,并排查文件的配置等相关辅助文件有无改动。

说起来容易,三很难做到。如果确认无改动,就应立即转战看有没有模块间调用,直接调用或者回调。从接口从发,排查是否接口调用出错引发。

如果非接口调用,还要再排查。对比运行同样的功能,如启停服务,仔细对比新、旧版本的每一行日志,找出不同点。

我这里出的特殊情况,就是对应的缓存目录文件没有读到,导致的错误。但细想下,没有读到文件,肯定是没有写入,为什么没有写入?问题基本上就快追查到了。

最终排查的结果是:由于平台不同,早期版本是硬件版本,对磁盘没有要求,所以读配置判定磁盘大小都能达到要求。但是新版本是虚拟版本,磁盘做了限制,但是仍然读的是早期版本的配置,导致判定出错,问题水落石出。

修改方法:根据新版本磁盘文件,修改配置文件的参数,修改后Bug不再出现。并反复测试,确保所有场景都不复现,至此,Bug彻底消灭。

总结

即便是生疏的模块,即便模块负责人已经不在,回头看下,也无非上面的思路去排查。一条路行不通,要大胆的揣测和进行Next思路的排查。

 


作者:铭毅天下

转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/43373663

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
8月前
|
测试技术 API
修改bug引入更多bug怎么办?
修改bug引入更多bug怎么办?
170 0
|
8月前
在代码优化过程中,常见的错误和bug包括以下几点
在代码优化过程中,常见的错误和bug包括以下几点
|
SQL JSON 前端开发
【改BUG】项目遇到的奇葩bug
【改BUG】项目遇到的奇葩bug
106 0
|
5月前
|
存储 缓存 Java
hyengine编译实现问题之复用 quickjs 原代码如何解决
hyengine编译实现问题之复用 quickjs 原代码如何解决
|
7月前
|
JavaScript Java
做小程序时遇到的bug
做小程序时遇到的bug
|
Java
以下代码找bug
以下代码找bug
139 0
|
Unix Apache C++
给代码写注释时有哪些讲究?
给代码写注释时有哪些讲究?
174 0
给代码写注释时有哪些讲究?
|
Java 应用服务中间件 Docker
同事嫌我改Bug慢,原来是没掌握这些代码Debug技巧
代码Debug调试是研发工程师日常工作中必不可少的重要组成部分。进行代码Debug调试的目的无非就两个,一个是自我检查代码逻辑是否有问题,便于自己将Bug消灭在测试介入之前;另一个是进行线上问题排查定位,找到实际在跑业务的过程中出现的Bug。
同事嫌我改Bug慢,原来是没掌握这些代码Debug技巧
|
前端开发 计算机视觉 Python
代码报错还好说,源码报错才难搞!分享自己源码报错的解决过程!
代码报错还好说,源码报错才难搞!分享自己源码报错的解决过程!
148 0
代码报错还好说,源码报错才难搞!分享自己源码报错的解决过程!
|
设计模式 算法 搜索推荐
长痛不如短痛,这次重构代码我干掉了 if-else
长痛不如短痛,这次重构代码我干掉了 if-else
179 0