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

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

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

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

特将排查方法总结如下:

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

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

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

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

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

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

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

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

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

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

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

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

2015-2-1 pm19:28 思于家中床前

作者:铭毅天下

转载请标明出处,原文地址:

如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!

时间: 2024-10-10 06:15:31

代码没有任何改动,为什么程序执行会有Bug?的相关文章

cocos2d-js 在线更新代码脚本 动态更新脚本程序 热更新

一.cocos2d-js 动态更新的基本思路 动态更新的好处不言而喻,不需要重新上架审核,能节省很多时间,也能让用户尽快使用上最新的版本,减少下载的成本. 官方BETA版本后提供了AssetsManager类,可以完成动态更新的步骤,说明:https://github.com/chukong/cocos-docs/blob/master/manual/framework/html5/v3/assets-manager/zh.md cocos2d程序安装后,以Android为例,程序存在于2个地方

什么是aPaas?aPaas与低代码又是如何促进应用程序开发现代化的?

从软件即服务(SaaS)到基础设施即服务(IaaS),云计算的兴起使“一切皆服务”(XaaS)模型得以泛滥,而aPaaS可能是这些模型中最鲜为人知的模型.随着aPaaS市场预计将从2018年的近90亿美元增长到2023年的约117亿美元,更加注重成本.效率的企业用户可能会见证aPaaS产品的扩展壮大. 什么是aPaaS? aPaaS代表应用程序平台即服务,是一类云计算服务.aPaaS中的“a”=应用程序或商业软件.PaaS =平台即服务(PaaS).PaaS是一个云环境,承载诸如集成软件,业务流

程序员被提 bug 之后的反应,太真实了!

本文来源网络 杀一个程序员不需要用枪,改三次需求就可以了! 对于程序员来说.没老婆不悲催.悲催的是:没老婆.控制台还不停的提示你:Error:could not find the object 假如生活欺骗了你,不要悲伤不要心急.<代码大全>会一直陪伴着你-- 程序员被提bug之后的反应: a.怎么可能: b.在我这是好的,不信你来看看: c.真是奇怪,刚刚还好好的: d.肯定是数据问题: e.你清下缓存试试: f.重启下电脑试试: g.你装的什么版本的类库(jdk): h.这谁写的代码: i

viewpager 自动无限循环 这段代码移到你的程序中就可以用了

本程序需要懂得viewpager的基础知识,也就是说你能够自己写出一个手动滑动的viewpager,下面我将附带加小圆点的知识 那么我们回顾一下图片轮转的基础知识,如果你已经对viewpager很熟悉了就不用看了,浪费时间 1.viewpager是在v4兼容报里面的,使用控件时请带上报名 2.数据来源用list存放,我这里用的是textview做的小圆点list<textview>,layout做的单张幻灯片list<view>,将xml文件inflate成为view,View.i

38条PHP优化代码!让你的程序更简洁!

其实,很多在刚刚入行做程序员的同学,往往会进入到一个误区,就是不达目的决不罢休!在通常情况下,新手程序员的代码写的会比较繁琐,整体来说就是因为对于代码的不熟悉!所以,在你成为真正大牛的时候再回头看看之前写的代码,会感觉曾经的自己弱爆了,哈哈!那么,培养一个良好的编写习惯和方法是尤为重要的!千锋教育就总结了以下经验优化,希望可以给给位准大牛们带来帮助! 1.如果一个方法能被静态,那就声明他为静态的,速度可提高1/4; 2.echo的效率高于print,因为echo没有返回值,print返回一个整型

都说Djnago框架重,那就让哥用15行代码写个django web程序!

很多初学django的小伙伴都会了解到,django是个大而全的网络框架,本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能.要学这么多内容,要学到猴年马月啊!? 不过世界真是奇妙,现在咱们就在猴年马月里!2016年是猴年,按农历计算,6月5日至7月3日是庚午月,正好是"猴年"里的"马月".那么问题来了:你想不想在猴年马月里学会django呢? 下面我们尝试一下,用15行代码结合django写个web程序,来一次django的清爽体验. djang

代码的规范化—高质量程序的结构(一)

PS:均总结自前辈经验和自己的个性化心得 1.程序是让人看的,是要分享给队友或者领导,甚至是任何陌生的人共享交流,还有记得大学的时候一次全院大会,院长说,“写代码就和写毛笔字一样,要有书法的规矩,要有美感才可以,这也是区分到底是科班还是非科班的出身,到底这个人平时是严谨的还是大意的,这个人有没有对美的追求,有没有真实团队开发经验的一个考察点” 2.学校里很少有讲这些,只能自己总结和加以注意. 一.程序整体结构排版 1.使用空格分割程序的不同逻辑块或者代码块,比如类的声明之后 1 class A

帮同事写了几行代码,在安装/下载程序里注册/卸载OCX控件

写了个小控制台程序,这个程序用来注册 / 卸载OCX控件,用在Inno Setup做的安装卸载程序里. #include "stdafx.h" #include <windows.h> #include <iostream> using std::cout; using std::endl; using std::cerr; int _tmain(int argc, _TCHAR* argv[]) { __try { STARTUPINFO si1 = {siz

怎么使用瓦特平台下面的“代码工厂”快速生成BS程序代码

这里说一下怎么使用瓦特平台下面的“代码工厂”快速生成程序代码 使用平台:windows+"visual studio 2010"+"SqlServer2000+" 结构:B/S 生成的结构:前端Html和JS.数据库sql,底层ajax,底层数据交互! 免费下载客户端:(永久有效)----------此版本不附带权限控制! http://pan.baidu.com/s/1hqtGGlA 代码生成介绍 1:打开瓦特平台的设计器: 点击提交:出现---> 在你的机