美文网首页iOS bug修复程序员iOS
学会这四招,助您轻松搞定 Bug

学会这四招,助您轻松搞定 Bug

作者: freeman_yang | 来源:发表于2016-05-23 21:49 被阅读599次

    副标题:trouble shooting方法论

    前言

    人处在互联网时代的最大美德便是,如果您对任何事情怀有疑问,请优先选择询问搜索引擎。

    什么是trouble,为什么要shoot它?

    god is lost

    Troubleshooting is a form of problem solving, often applied to repair failed products or processes. It is a logical, systematic search for the source of a problem in order to solve it, and make the product or process operational again.

    如果您还是不清楚什么是trouble shooting,请践行互联网时代的最大美德。

    做事情是需要掌握方法的,方法对了才会起到事半功倍的效果。

    下面便是笔者总结的定位和处理问题的方法论。共分为四个阶段,每个阶段形式上会有递进关系,实质上都各有独到之处,并无高下之分。笔者学识经验有限,欢迎批评指正。

    第一阶 人生苦短,我看log

    学会看日志,是定位问题的基本功。

    一般初学者,发现系统出现问题,一般只能观察到事情的表象,难以发现问题的症结所在,属于传说中的一脸蒙 B 状态,不知从何入手。稍有经验,就会渐渐发现,日志里能够获取部分信息,但是在信息与理解之间横卧一个巨大的鸿沟(在想这 TM 到底是什么鬼?!)。当无数次混迹于鸿沟之后,蓦然回首,才发现log是世界上最美的语言,没有之一!

    那么为什么日志对于解决问题如此重要呢?我认为,首要原因应该是日志里有对问题的追根溯源的程序级描述。这是我们能够获取到的第一手也是最重要的信息资源。其次,调整日志的不同级别,可以在不断假设检验的过程中排除它因,围绕问题本身玩科学实验。在这个过程中,我们可以探索实践再探索各种可能性,逐渐趋向于我们所求索的那个答案。

    那么看日志的最佳姿势是什么呢?

    1 先分析问题的表层触发因子

    A basic principle in troubleshooting is to start from the simplest and most probable possible problems first.

    2 沿着错误信息回溯,看错误日志的触发源在哪里

    3 分析各个可能的原因,逐一攻破

    A troubleshooter could check each component in a system one by one, substituting known good components for each potentially suspect one.

    第二阶 它山之石,可以攻玉

    会不会使用Google,是ordinary human和coding monkey的根本区别。

    吾将上下而求索

    在互联网的世界里,没有了搜索引擎,世界便是一片散沙。而搜索引擎的出现,正是为我们个人的资源获取能力赋能。

    在现代社会,搜索引擎或许会是我们最好的老师。而如何与老师相处又是一项极其重要的能力。当我们遇到问题,自己百思不得姐的时候,及时发出求助也是解决问题的很好的办法。

    那么使用搜索引擎的最佳姿势是什么呢?

    1 google搜索使用方法官方文档

    2 google高级使用

    第三阶 上帝之眼

    上帝说,这个世界的本质是概率的,但是你们这支智人只能从因果关系中理解世界。

    the way to god?

    当圄于事件本身,我们终究不得解时,或许,我们应该跳出框框,重新来审视一下这个世界。

    为索求哲学意义上的完整与根本,其实,我们还有一条简易之路可以走。

    这条路便是:

    画数据流图,画数据流图,画数据流图。重要的事情说三遍。

    在数据流图中,我们索求因果。在发生bug的前前后后,都发生了些怎么样的故事?触发这个问题的根源可能是在哪里?很有可能,你会突然发现,你的trouble之因可能并不在你。或许是依赖不存在问题,或许是上一级发生了数据流阻塞,或许是某些条件没有满足……

    总之,问题的诱因可能并非问题本身所告诉你的那样,富有经验的工作者喜欢称之为“环境问题”(当然,不愿意排查自身问题的推脱者也喜欢经常把这话挂在嘴边)。

    那么开启上帝之眼的最佳姿势是什么呢?

    打开Google doc,开始画吧。

    注意,这只是通往上帝之眼的第一道门。在这个概率统治的世界里,我们唯一能做的,只能是与不确定性共舞。而其中境界,没有最高,只有更高。

    第四阶 大胆假设,小心求证

    当我们已经找到了通往上帝之眼的道路,还需要“科学”这支拐杖吗?

    science and god

    科学精神与上帝之间,本质上是相通的。正如我们用两条腿走路一样,二者缺一不可。

    如题,“大胆假设,小心求证”便是科学精神的精髓。

    “大胆假设”,是说在不确定的世界中充满了各种可能性,而每一种可能性都值得我们去尝试去探索,因为每一条路都可能通往真理的殿堂。“小心求证”,是说对于每一种假设,我们都会以谨慎的态度在实践中去不断践行和验证,最后甄别出通往真理的那一条。

    当我们遇到bug时,“大胆假设”便是分析各种可能导致问题的原因,“小心求证”便是对各种可能的原因,控制单一变量,单独对每一种原因进行单独测试,依次排除各种可能的原因,最后定位到问题是所在。

    那么开启科学方法的最佳姿势是什么呢?

    这应该已经不是问题了。

    总结

    定位解决问题,大致分为四个层级:

    第一阶:查看log,关注问题本身

    第二阶:使用Google,学会提问

    第三阶:画出数据流图,宏观定位问题

    第四阶:使用科学方法,排查问题

    修炼好这四阶功夫,能帮助你独立定位解决大部分的问题。

    当然,修行之路永无止境,愿bug成为你的好朋友。

    提问

    1 以上方法都用了,你没说的方法我也都用了,但是还没解决问题怎么办?

    好问题!建议您去冲个澡或者喝杯咖啡,很有可能问题的答案会在不觉中浮现噢~

    2 我刚才去喝了杯咖啡,但是问题的答案并没有浮现,我该怎么办?

    …… 好!问!题!去和您身边的小伙伴交流一下吧,这可是增强机油润滑能力的好机会……祝好运。

    3 机油也无能为力,我该怎么办?

    就目前的情况来看,或许这个问题暂时并不适合您……let it go!!!

    参考引用

    Troubleshooting wikipedia

    相关文章

      网友评论

      本文标题:学会这四招,助您轻松搞定 Bug

      本文链接:https://www.haomeiwen.com/subject/lrzarttx.html