《Effective Debugging:软件和系统调试的66个有效方法》——第14条:考虑对软件进行更新-阿里云开发者社区

开发者社区> 华章计算机> 正文

《Effective Debugging:软件和系统调试的66个有效方法》——第14条:考虑对软件进行更新

简介:
+关注继续查看

本节书摘来自华章计算机《Effective Debugging:软件和系统调试的66个有效方法》一书中的第2章,第14节,作者[希]迪欧米迪斯·斯宾奈里斯(Diomidis Spinellis),爱飞翔 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第14条:考虑对软件进行更新

接下来,笔者要说几个很多人都意想不到的bug来源。并非所有错误都是由于你自己所写的代码而造成的,用来处理这些代码的编译器或解释器、你所使用的程序库、你所依赖的数据库和应用程序服务器,以及上述工具所在的操作系统,也有可能要对程序中的bug负有责任。笔者编写本书时,Linux的源代码里面包含2700多条带有XXX字样的注释,该标记通常意味着可疑的内容,这其中有一些肯定是bug。

于是,有些bug就可以通过更新软件来解决。如果你要发布的打包应用程序里面出现了隐晦的bug,那么使用新版的编译器或程序库或许能够帮助你修复这个bug。如果你要发布基于软件的服务,那么对中间件、数据库及操作系统进行更新也是很有好处的。至少应该尝试用最新的版本来构建、链接或运行程序代码,以尽量消除因第三方组件而引入bug的概率。然而,有时采用稍微保守一些的升级策略也是很有道理的,这就是说,尽管我们知道旧版软件不太完美,但是基于某些原因,我们还是决定继续使用这些软件。有很多中间件本身编写得就有错误,或是向后兼容性不太好,因此,有经验的用户通常会较为谨慎地进行升级,他们会升级到能够解决其问题,而且发布时间第二早的那个bug修复版本上面(如6.4.3版)。此外,新版软件也会引入新的bug与兼容性问题,因此在升级的时候至少要给自己留一条退路,也就是要拟定一套明智的后退计划,如果升级失败,或是升级到的版本无法解决你所面对的bug,那么可以根据该方案退回原有的版本。我们可以在沙盒中更新第三方的代码,例如,可以对虚拟机进行复制,在复制出来的镜像里面进行更新,如果更新后的效果不好,那么直接把这份镜像丢掉就行了,这是一种可靠且较为简便的办法。尽管更新软件对解决bug确实有一定的帮助,但无论如何都不要对此抱有过高的期望。

除非你能够证明外部代码确实有错,否则最好是先假设它们正确无误。有些bug看上去好像是由第三方代码所引发的,然而在大多数情况下,其实是由于你自己的问题而造成的。30年的调试历程中,笔者在自己的代码里面修复了数以千计的bug,与之相对,由于某款流行的商业编译器生成了错误的代码而导致的bug只出现了一次,由于程序库而导致的bug只出现了几次,由于操作系统的功能不稳定而导致的bug只出现了一次,由于描述系统调用的文档有错而导致的bug只出现了几次,由于工具和其他系统软件而导致的bug也只出现了几十次。因此,对软件进行更新的最大意义,就在于给我们提供一个新的起点,令我们可以下定决心来好好清理自己的代码。

要点

  • 在更新之后的环境里面重新尝试你所编写的代码,看看这次会不会出错。
  • 不要对更新软件所带来的效果抱有过高的期望。
  • 要考虑因第三方组件而引发bug的可能性。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Fundebug支付宝小程序BUG监控插件更新至0.2.0,新增test()方法,报错增加Page数据
摘要: 0.2.0新增fundebug.test()方法,同时报错增加了Page数据。 Fundebug提供专业支付宝小程序BUG监控服务,可以第一时间为您捕获生存环境中小程序的异常、错误或者BUG,及时给开发者发送报警,帮助您快速修复BUG。
1088 0
Fundebug前端JavaScript插件更新至1.7.1,拆分录屏代码,还原部分Script error.
摘要: BUG监控插件压缩至18K。 1.7.0拆分了录屏代码,BUG监控插件压缩至18K,另外我们还原了部分Script error,帮助用户更方便地Debug。请大家及时更新哈~ 拆分录屏代码 从1.7.0版本开始,我们拆分了录屏代码。
1349 0
V5.10 DebugServer中CKLINK驱动更新说明
V5.10 DebugServer中CKLINK驱动更新说明
3271 0
如何保证 Serverless 业务部署更新的一致性?
每一个工具的诞生,都要有一个成长的过程,Serverless Devs 正在不断的成长。
3065 0
在线应用云调试系统--Zdebugger
该文章来自于阿里巴巴技术协会(ATA)精选文章。 缘起 早在今年(2014)的JavaOne大会上来自google的speaker---Ludovic Champenois提到了他们的一个新产品cloud debugger,主要是用来调试部署在他们云端的应用的,但是会上并没有透露太多的细节。当我
6349 0
产品干货 | 平头哥剑池CDK 更新重磅来袭!三大亮点速看,邀你参与体验赢好礼
剑池CDK V2.6.3更新版本优化了用户使用体验,更新内容25条,方便用户快速上手;增加了组件池的概念,组件复用性增强;最大亮点在于定制化AI语音部署平台更新,可以让用户离在线实现3分钟自定义语音词和唤醒词,同时UI视觉上更美,操作路径更短,效率更高。欢迎大家在点击文末链接更新版本,告诉我们你的反馈体验。
4246 0
赶快更新!Chrome再现高危漏洞已遭利用
Chrome update 72.0.3626.121 的 Windows、Mac 和 Linux 操作系统版本中已修复该漏洞,用户可能已经收到或者将在数天
138 0
ORA 12592的报错处理及补丁更新
                   ...
1530 0
Fundebug录屏插件更新至0.5.0,新增domain参数
摘要: 通过配置domain来保证“视频”的正确录制 录屏功能介绍 Fundebug提供专业的异常监控服务,当线上应用出现 BUG 的时候,我们可以第一时间报警,帮助开发者及时发现 BUG,提高 Debug 效率。
886 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载