最近手上的项目已经进入了联调阶段,由于是第一次接手这种联调的工作,心里还是有些许的紧张,考虑了N种失败的场景。
不过,真正开始联调之后,虽然起步艰难,但后续发展还算平稳。当取得一个阶段性成就后甚至还有一丝丝小激动,眼下初期联调的工作已接近尾声,虽然突破了N多阻碍,但依旧不敢松懈,就在以为联调工作已经做的很充分的时候,
出现了一个令我意想不到的“bug”。
我发现服务端莫名其妙的多发送了N条指令,为了验证这一点,首先修改了日志记录,在新版日志的铁证面前,可以确定这些指令的确是服务端发出的。
然后,我选择了断点查看了一下代码的执行,却只看到了一条指令的发出... ...
这是什么诡异的问题?
陷入迷茫的我选择了反复测试了几次,结果是一致的,指令的确是从服务端发出的...
平时一直忽视的调试技巧在此时却显得无比的重要,好在忽然灵光涌现,采取了人工逆向追踪的方法,从最终发出指令的函数开始逆推,发现这实际上并不是bug,而是在某种情况下触发的一种正常的机制。
这种机制在协议上并没有体现,也就是说没有文字资料,这个项目本身是基于另一个项目改造的,看来还是我当初阅读别人代码的时候不够仔细,没有理清业务的每一个细节。
调试技巧也有明显的不足,之前学习的堆栈跟踪没有在实际项目中应用过,遇到问题居然完全没有想起这个方法。
看来以后写项目之前务必要将业务全部理清,必要的时候应该以脑图进行记录...当程序员真难...