AlexiaChen / AlexiaChen.github.io

My Blog https://github.com/AlexiaChen/AlexiaChen.github.io/issues
88 stars 11 forks source link

有关于修BUG的一个思考 #30

Open AlexiaChen opened 4 years ago

AlexiaChen commented 4 years ago

title: 有关于修BUG的一个思考 date: 2016-08-26 10:14:16 tags:

主要是在知乎看到龚敏敏大神的一篇文章才引发的思考。文章的评论中有个回复比较有意思:

clang里有个bug,在windows平台上编译出来的dll,类的导出函数都多了个下划线前缀,从2011年开始被喷了4年,无效。ms一push,3天就修好了。(然而那个补丁超级邪恶。检测到下划线就去掉,而不是找到为什么会多一个下划线)

以上的回复我有一些删改。

对此我引发的一些思考是,对于大型的复杂精密的系统软件的BUG修复问题:修BUG是找到出现BUG的本质原因,还是可以在适当的情形下考虑从其他角度规避造成BUG这个现象就可以了?简单来说,就是只要让该现象不出现就可以了。

如果是正常情况下,在我们的工作中这样修复BUG是万万不行的,因为这只是隐藏问题,而不是解决问题,这是一种不负责任的做法。我相信只要是一个负责任的工程师都不会这样做。

但从以上微软修复BUG的例子来看,工程师们选择的是后者。因为编译器是一个很精密复杂的工程,在没经过严格的单元测试下不会发布,所以测试编译器的正确性也是含金量很高的活。对于这种精密复杂的系统修改它的BUG就不是那么容易的,而且又在极其有限的时间内修复,那么就难上加难了,因为很容易牵一发而动全身,一旦出现一些诡异难缠的BUG,即使是经验丰富的工程师短时间内很难找到问题症结所在。

最后,我对这种方式的修BUG行为做个总结,如果要以这种方式解决问题,那么你应该明确评估以下几点

最最后,真的是最后了 = =! 分享一个我平时Debug的方式: