昨天測试人员和开发者都发现, 某新版本号有严重的bug.  群里已经開始嚷嚷了, 但没有谁知道是谁引入的问题。本来呢, 这个问题不应该是由我去定位, 但主管让我帮定位一下, 毕竟时间太紧急, 必须尽快解决, 開始的时候, 我还是有些压力的跟有经验的员工讨论后, 也没有比較好的办法, 所以, 仅仅能自己想办法了。为了方便叙述,
以下我会对实际场景进行抽象。

经我亲自验证发现, 100版本号绝对ok,  300版本号却有问题, 也就是说, 是这个之间的某个版本号引入了bug.   由于这个问题比較难以定位, 所以查看配置库的改动记录就成了当前唯一可行的办法。

可是, 细致重复看了这个区间的改动记录, 没有发现有可疑的异常情况, 所以仅仅能採取二分查找验证了, 仅仅是每次验证都至少要15-20分钟, 并且每个步骤都不能出错。问题是, 模块较多, 是回退某一模块还是回退全部模块呢? 依据bug的现象, 确实难以分析出出问题的模块所在。

怎么办? 我和另外一个有经验的员工首先分析了出问题可能性最大的两个模块, 昨天下午開始, 对当中的一个模块(第三方库)进行版本号回退測试, 没有发现有异常, 并且单一模块回退多了, 非常easy造成编译只是(其它模块不回退), 各种郁闷和苦逼啊 搞到凌晨还是没有搞出来, 好吧, 太累了, 先回家睡觉。

今天呢, 我必须单独搞定这个问题, 于是我对另外一个可疑模块进行回退測试(其余模块都採用最新代码和库)。 边回退, 边记录结果。我取这个可疑模块的第200个版本号进行測试, 发现ok,  这个时候, 就有点高兴了知道问题基本就锁定在这个模块了, 于是花了3个多小时进行二分回退验证, 搞了7, 8次吧, 最后锁定了改动引入问题的版本号,
铁证如山。结果查看改动记录后, 傻眼了, 该代码提交人只改了一个单词。 好吧, 尽管我不清楚问题的详细原因, 但我证据充分地定位到了问题, 让相应的人改动(最后他发现, 也确实有问题)。

二分版本号回退法是最无奈的办法。 哥们, 以后改动问题要注意啊, 不要引入新的问题搞我辛苦一大天, 还搞到凌晨。

最后,要强调一下: 定位问题, 思路非常重要, 不然搞几天都有可能搞不出来, 自己误导自己。  这次定位bug, 尽管过程非常繁琐非常苦逼,但还是非常开心的, 定位出了一个严重的bug, 能让版本号顺利公布。

噢耶

补充说明: 有的网友反馈, 你能够加日志定位啊。 事实上, 原bug的现象就是: 该系统没有日志输出

无奈而又苦逼的二分版本号回退法定位新引入的bug!!!的更多相关文章

  1. 漫画 | 到底是什么让IT人如此苦逼???

    写在最后 漫画是有点夸张,不过多少还是有点现实开发过程的影子! 老板很乐观,核心就是三个月上线,至于怎么办那是底下人的事. 产品很无奈,心里盘算着,万万不可在他这一环节耽误了进度,时间这么赶,先出个壳 ...

  2. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  3. Pylons安装苦逼之路

    本文介绍一下我在安装pylons的过程中出现的一些错误和解决办法,当然这些都是不完全版. 1.在Serve1(服务器Python版本2.4.3)上面装环境的时候总是出现with_statement有关 ...

  4. PHP项目的“苦逼”经历与思考

    PHP项目的"苦逼"经历与思考 PHP零基础.但因为项目人手不够的原因,被安排到一个用户"定制"项目. 该项目是用PHP生成的统计数据报表. 而用户又有新的3个 ...

  5. 搞IT的技术人员为什么会如此苦逼

    http://www.cnblogs.com/springmvc-hibernate/archive/2012/05/10/2493733.html ————————————————————————— ...

  6. 谋哥:App开发者的苦逼不值得怜悯!

    [谋哥每天一干货,第四十篇]        为什么取这个标题呢?因为昨天一些本来“支持”谋哥的人看到谋哥搞收费VIP群,觉得谋哥赚苦逼开发者的钱很不道德,且说谋哥我写的东西都不切实际,全部是一些思想性 ...

  7. 苦逼三流小公司程序员这半年找工作经历(3)——选择offer

    本文按照企业规模.性质.规模,分成三类,点评一下遇到的这些公司.也算是为半年找工作经历的一个总结. 1,三流小公司 公司规模类似于笔者跳槽前所在企业,性质有外商独资.合资,当然大多数都是民营企业,规模 ...

  8. 苦逼IT才能看懂的笑话

    这是苦逼IT才能看懂的笑话1.栈和队列的区别是啥? 吃多了拉就是队列:吃多了吐就是栈 2.世界上最遥远的距离不是生与死,而是你亲手制造的BUG就在你眼前,你却怎么都找不到她... 3.<c++程 ...

  9. 你还在苦逼地findViewById吗?使用ButterKnife从此轻松定义控件

    前段时间笔者在苦逼地撸代码~最后发现有些复杂的界面在写了一屏幕的findviewbyid~~~另一堆setOnXXXListener~有没有方便一点的方法让我们简单点不用每次都定义一次.find一次, ...

随机推荐

  1. 《Java程序代理器》- java桌面程序运行的前端启动框架

    虽说让java直接在桌面运行,有很多方法,但最简单的还是有个exe双击执行 要java执行就得有虚拟机,但原本的虚拟机文件体积太大,不方便随同打包,精简的虚拟机功能又不全,指不定什么时候报错 所以正规 ...

  2. HLG 2163 方格取数 (最大网络流)

    题目链接:  m=ProblemSet&a=showProblem&problem_id=2163">点击打开链接 Description : 给你一个n*n的格子的棋 ...

  3. Windows - Windows的文件名的全路径(Fully Qualified File Name)的最大长度为260字节

    例如,你可以做以下实验来验证这个限制值: 在随意文件夹下新建一个文件夹. 在该新建文件夹下创建一个随意文件.使其名字长度不能再输入为止. 把该文件的全路径名copy到Microsoft Word中进行 ...

  4. Java中对不变的 data和object reference 使用 final

    Java中对不变的 data和object reference 使用 final 许多语言都提供常量数据的概念,用来表示那些既不会改变也不能改变的数据,java关键词final用来表示常量数据.例如: ...

  5. 为什么推荐std::string而不是char*

    例如如下: map<const char*, const char*> map_test; map_test["a"] = "a"; map_tes ...

  6. ASP.NET管线与应用程序生命周期

    ASP.NET管线与应用程序生命周期 ASP.NET管线与应用程序生命周期 8.1节介绍了IIS的系统架构和HTTP请求处理的总体流程,从中可以知道每个ASP.NET网站都对应着一个Web应用程序,此 ...

  7. WPF界面设计技巧(1)—不规则窗体图文指南

    原文:WPF界面设计技巧(1)-不规则窗体图文指南 初到园子,奉上第一篇入门级教程,请勿见笑. 以往WinForm编程中,实现不规则窗体是有一定难度的,更难的是不规则窗体的边缘抗锯齿及局部透明处理.而 ...

  8. 意外地解决了一个WPF布局问题

    原文:意外地解决了一个WPF布局问题 今天做了一个小测试,意外地将之前的一个困扰解决了,原问题见<WPF疑难杂症会诊>中的“怎么才能禁止内容撑大容器?” 以前我是在外侧嵌套Canvas容器 ...

  9. Android 权限添加

    在AndroidMainFest.xml中加上以下代码就行了 添加WiFi以及访问网络的权限: <uses-permission android:name="android.permi ...

  10. Big Event in HDU(杭电1171)(多重背包)和(母函数)两种解法

    Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...