简单的调试方法----非原创

155 阅读3分钟

三种调试方法

初级:打log

中级:打断点
高级: 测试驱动开发

初级:打log

使用场景
 1.了解这段程序的运行过程,只是对某一个环节的运行情况时,打印log
 2.学习新知识时,通过打印的方式,查看他们是什么
 
缺点
就是不停的打印,查看解锁,比较浪费时间
而且如果你根本不知道程序的运行放式,打log的方式就很低效

中级:打断点

使用场景: 你不清楚程序的运行的过程,适合打几个断点
比如说有一段负复杂的异步操作,循环,递归,你完全不知道它运行到某一个阶段,是什么值,进入到哪里,
他们的先后顺序
清楚的看到程序运行的过程,前进入哪里,进入时的值是多少,都可以方便的看

测试驱动开发

3中排错思路

所谓的“奇葩”问题,有时候真的是自己眼拙,或者自己排查的地方没错,关注点错了,而你盯着那段真的正确的代码,自然怎么检查也查不出问题。

小的方法:
      二分法
      删除法
      对比法

二分法

面对一坨代码,你也不知道bug出在哪里,甚至都没报错,或者你根本不想看这段代码。

你就用二分法,第一行、最后一行、中间一行各自打一个log

因为javascript是自上而下运行的,所以肯定每次都能把错误范围缩小50%

这样应该反复几次就能确定bug在哪里啦。

删除排错法

有时候是不是会出现,我没动呀,怎么刚才还好好的,现在就不能运行了。

这时候你可以选择注释或者删除掉一部分代码,只留下你认知里觉得正确的代码。

不断的删除或者注释,直到不再报错

那么,上一步还报错呢,这一端代码被注释后,错误就消失啦,自然也就定位到bug的位置啦

对比排错法

有时候你也不知道是哪个版本出现的bug,似乎上几次提交就有bug了,而你没注意....

如果删除法和二分法,都无法定位错误,就只能git reset --hard了

回退到绝对没问题的某一次commit

然后利用二分法,找到某一个commit版本没问题,而下一commit版本就出bug了

也就说,定位到问题出现在那一次代码提交

然后通过git diff 对于2次提交,究竟改动了哪些代码。

如何面对没有做过的需求

就是面对一个你从来没有做过的需求,你不知道如何做,你甚至怀疑这个需求能不能做?

这种情况下,我建议只要是听上去比较合理的需求,就不用急着拒绝。

    先分析一下这个需求是不是合情合理,真的对用户有帮助。
    如果合理,那么再想一想,这种需求是否常见?
    毕竟常见的需求肯定有人做过,那么你也就不用担心能不能做?如何做?之类问题啦
所以面对没做过的需求,也不用着急,只要是合理的需求,我们好好思考,总归是有办法解决的。