从一次使用自动售货机的经历浅谈代码调试。

事情是这样的,我先是拿了一张皱皱巴巴的十块钱投进去,我们可以把这理解成输入数据。然后它怎么也不收啊,这就说明我的数据不是它需要的类型,为什么呢?因为皱巴啊。这里我做了一个错误的决定,我选择重复多次输入,试图蒙混过关,让程序误以为我输入的是正确的数据,而这也就产生了我要说的bug。不过在讲这个bug之前呢,我想先赞扬一下这个自动售货机的超时设定,它可以在60秒没有正确输入的情况下强行退出,这就可以避免很多死循环之类的问题。好,继续说这个bug,这个bug就是我的十块钱投进去了,但是并没有被处理程序检测到,也就是说,我的钱被吞了,同时,程序因为异常退出了。遇到bug怎么办呢?不要慌,先想办法重现这个bug,或者说重新输入新的数据,比较两次输入的不同以及不同输入导致的不同输出结果,分析问题原因。于是我回宿舍又拿了一张崭新的五块钱,这次还没有输入,刚点击现金支付,或者说刚调用现金支付这个接口,程序就显示异常退出了。这就很奇怪了是吧?为什么呢?我马上想到,应该是我之前那个十块钱并不是没有得到正确处理,而是根本没有成功输入。那么他就在....没错!他就在投币口卡着,只不过藏的比较好。于是我把他拽出来了。重新输入新的数据:崭新的五块,ok!我买到水啦!
写着玩的23333大家看个乐就好。