explorer

万丈高楼平地起,勿在浮沙筑高台

0%

解决BUG思路

总结在平时工作中遇到各种bug时的解决思路,我发现自己比较健忘,不总结一下有的时候会迷失……

一图胜千言,直接上图:

solution_bug.jpg
  1. 当发现问题时,如果是对此对象不怎么熟悉,那么直接google其输出信息在一般情况下是可以解决的。
    • google 的时候要注意关键词的使用,中文英文都要试试
  2. 如果搜索了很久都没有找到答案,那么就需要看此问题是否重要了,如果重要那么就需要学习必要的概念熟悉此对象。
    • 重要性是相对的,要根据当前的目标和方向来定。如果不太重要可以先记录下来待以后解决。
  3. 对于熟悉的对象发现了bug,首先要做的就是定位问题并缩小范围,排除一些不相干的干扰。
    • 对于代码而言可以通过打log,屏蔽代码,设置断点等方法来缩小范围
    • 对于FPGA而言可以通过调试核来观察时序缩小范围
    • 对于数据流的验证,可以使用log打印其数据然后通过matlab以图形化的方式展示
    • 其实熟悉的对象中也有不熟悉的部分(比如Linux内核),这个时候 一定要有勇气和信心跳进去看源码
      • 遇到逻辑稍微复杂的代码,要勤于动手,画流程图
    • 需要注意的是,不要简单的靠感觉和猜测去修改原有代码。至少要有一定逻辑推理的情况下修改,如果无效那么还应该改回来!
      • 使用外部工具或单元测试来直观的展示问题更具有说服力
  4. 当定位问题后如果通过已有知识百思不得其解,那么可以回到原点来梳理问题。
    • 从头回顾一些概念,以及反思自己之前在解决这个问题时的思路
      • 反思自己的思维方式,有时会豁然开朗
  5. 确实是绞尽脑汁都无法解决,那么就需要上论坛提问了
    • 提问时不要怕麻烦,尽量清楚的表述问题现象以及自己的解决思路
  6. 最终解决后需要屏蔽掉解决代码然后再使用,以验证是否是此解决方案起了效果
  7. 其实也有可能尝试很久都无法解决的问题,这个时候可以将其记录下来,先去处理其他事务
    • 说不定在将来的某一天会发现解决方案
Last Updated 2020-06-28 Sun 12:00.
Render by hexo-renderer-org with Emacs 26.3 (Org mode 9.3.7)