Bug 修复思路

分享 Jim ⋅ 于 2016-12-16 17:01:10 ⋅ 87 阅读

报错信息搜索法

现有报错信息:

panic: lstat /xxx/xxx/xxxx: no such file or directory
...

解决思路:

  • 理解 no such file or directory 的意思,(可以使用翻译软件或xxx)
  • google搜索 no such file or directory ,看别人怎么说.

概率优先级法

  • 要以万事皆有可能的原则思考问题.否则你会漏掉某些小概率事件.
  • 要排除一种可能性,需要有一定的把握.没有排除掉大概率的原因,就去研究小概率的原因,会浪费大量时间(这个需要练习)
  • 这个思想其实是一种计算机算法 蒙特卡洛树搜索(MCTS),我们此处手动执行而已.

请按照一下顺序考虑问题可能的原因,(较大概率组):

  • 最近刚写的代码的bug.
  • 最近刚执行的操作不符合程序的要求.
  • 之前遇到的一个已知但是没有修复的bug.
  • 没有满足某种 系统/工具接口 要求的预先条件.
  • 对 系统/工具接口 的理解有误.你自己没看懂文档. (可以考虑单独对 系统/工具 接口写简单测试,排除其他影响)

请排除了上面的情况之后,再尝试下面的原因.(小概率组):

  • 工具的文档有bug. (这个概率比工具代码有bug高)
  • 使用的工具本身有bug.(当前使用的语言啦,git命令行工具啦)
  • 操作系统有bug.

单个解决问题的思路的执行细节:止损

  • 根据概率优先级法,采用某个大概率思路或者方法尝试解决问题时,经常遇到这个思路得到的结果是错误的
  • 这种时候解决问题的人可能会做出两种选择:
    • 放弃这个大概率成功的思路,想其他的方法
    • 反复执行这个思路,发现结果都是错误,始终不敢相信结果是错的,于是继续反复执行
  • 评价:
    • 第一种选择,太快放弃,由于采用的大概率的思路,而 BUG 往往只有一个正解,你轻易的绕过了正解,就可能需要绕一圈才能绕回来,所以应该100%确定其是无效的,否则反而会增加解决 BUG 的时间
    • 第二种选择,大概率思路的结果错误,常常是因为你执行大概率思路时,执行过程出现了错误,而手动执行往往会让执行过程更加不靠谱,所以,建议使用自动测试来进行调试,不要肉眼看,因为我们这些凡胎俗体经常看错!
  • 大概率思路被100%确认为不可行时,就应该立即开始执行次概率思路
  • 「不可行」的定义是:
    • 100% 被验证为是错误的思路
    • 超时:对于耗时很长的思路,设定一个最长执行时间,比如设定「用 N 个小时尝试用 A 思路解决」,如果 N 小时过去了,A 思路还是没有很大的把握解决,那么 A 思路超时
    • 超时的时间需要长期实践和练习才能把握

单个解决问题的思路的执行细节:隔离与排除

  • 当一个很复杂的代码逻辑出错时,有时并不能直接找到问题的原因,就隔离呗
    • 将这段代码拆分为很多个单独的函数,依次测试
    • 如有必要还需要隔离环境
    • 一个页面中某个效果始终做不对,新开个页面咯,单独写这个效果测试
  • 总之,这个思路就是将问题一直拆分,测试,排除直到拆到原子级,或许就把锅甩给系统了。。。
本帖已被设为精华帖!
本帖由 Jim 于 1月前 置顶
回复数量: 0
    暂无评论~~
    • 请注意单词拼写,以及中英文排版,参考此页
    • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
    • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles: ~~
    • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
    • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
    Ctrl+Enter