热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

三行代码与一天半

为什么软件开发是一项艰难的工作。看一下这个例子:星期五,tester告诉我说一个月前改得bug依然存在。好的,让我来看一看。先看一看上一次我是怎么修理这个bug的。先赞一下我们的源代码

为什么软件开发是一项艰难的工作。看一下这个例子:

星期五,tester告诉我说一个月前改得bug依然存在。好的,让我来看一看。先看一看上一次我是怎么修理这个bug的。先赞一下我们的源代码管理系统。它可以把你当前机器上的代码和源代码对比生成一个pack. 这个pack可以用diff的工具打开。做了什么修改,看上去一目了然。在bug tracking系统里,我当时把fix的pack也记录下来了。整个change看上去只有一行代码。非常明了。看不出任何问题。
嗯, 可是在她的测试服务器上的确如此。看一看测试服务器上的log, 没有发现任何异常和有价值的信息。看来没有办法。好吧让我来debug一下。
这是一个软件升级过程中的bug。要debug这个问题,需要一台干净的服务器。安装好以前的版本,找到出问题的版本,安装出问题的版本。然后在安装的过程中,attach到调试器上。可是,我的开发环境也在进行另一个feature的开发。不可能进行这个测试。 幸运的是,我还有第二台开发机。虽然目前没有在上面开发,但是我还是一直保持同步。更幸运的是,已经有工程师开发了一个脚本。只要一运行。就会有一个虚拟机自动从网络上copy一个镜像,然后开始安装旧版本在用开发机上的build升级。看上去我所需要做的就是如此。小case.
我来到team的wiki上,找到了使用这个脚本的步骤。
开始执行
。。。
。。。
15分钟用来从网络上copy虚拟机的镜像。
25 分钟用来安装旧的版本。
15分钟将我本地的build copy到虚拟机的镜像中
一个小时以后,升级过程开始了。
啊偶, 一个错误跳出了。看上去和我的问题无关。又看了一下wiki。怀疑我的build没有全。(这种情况经常发生)。 好,再来一个full build.
。。。
 一个半小时过去了。问题依旧。又仔细的看了一下log和错误提示。 发了wiki上的内容没有即时更新。终于Fix了这个问题。再来,好的,debugger  attach 上去了。可是symbol找不到。在visual studio 上,选load symbol,选中之后。 Visual studio 就crash #$#@
把symbol拷贝到虚拟机, 万岁,Visual studio 不crash 了。 Symbol load起来了。设置断点。把虚拟机设到全屏。虚拟机蓝屏了#$#@
再来一次。终于可以debug了。五分钟后,发现了问题。加了两行代码。ok了。
这个过程,花了整整一天半。因为, 其中每重复一次,都要重新安装旧的版本否则升级无法进行。
看一看这个过程, 我们已经有相当好的软件工程了。为什么还会这样:
1.       1. 对于这种升级的代码一定要多写log。没有人在意升级的时间。一定要把每一步都log下来。这种问题一旦debug所花费的时间是巨大的。
2.       2. 工具的文档要更新。安装虚拟机的步骤没有即时更新。原先的人已经不在了。很久没有人使用了。

 


推荐阅读
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 本文记录了作者对x265开源代码的实现与框架进行学习与探索的过程,包括x265的下载地址与参考资料,以及在Win7 32 bit PC、VS2010平台上的安装与配置步骤。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 本文介绍了使用Rust语言编写、保存和编译程序的简单步骤。首先,打开记事本文件并编写程序代码,然后将代码保存到一个以.rs为扩展名的文件中。接下来,使用rustc命令来编译运行程序。最后,通过命令行运行编译后的程序,得到输出结果。如果遇到编译错误,可以下载Build Tools for Visual Studio 2017来解决。 ... [详细]
author-avatar
他丶是我唯一的执着_490
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有