在开发代码的高峰时期,有时候同一时间两个人甚至更多人需要整合代码,上传入库,为了避免冲突,代码库会有锁机制,有一个人获得锁之后,别人就不能上传自己的代码,只能等这个人整合测试完毕释放锁才能进行操作。
理论上说,这种方法可以追溯到每个人的每次更新,可以很快的查出来究竟是谁导致的这项问题,只是更新的源码版本非常多,即使只改一个字母上传后也会生成一个新版本号,一个项目做下来可能会有成千上万的版本号。谭明明简单粗暴地使用二分法,先从中间版本开始查起,发现已经有问题了,又去查前半部分的中间版本,还是有问题。等谭明明一版一版地下载查阅,却惊讶地发现原来每一版代码里的线程退出都注释掉了,等她查到最初的linux最小系统版本,才发现原来这个版本的代码就有问题!
简直令她崩溃,早知道她就从前往后查了。
他们测试机顶盒都是保证功能可以正常运行就算测试通过,即使是压力测试也仅仅测了三天,所以一直都没发现这个问题。后期的代码检查也大都只关注自己的模块代码,谁会没事干去看线程处理啊。
谭明明忍不住又找师傅吐槽。
谭明明(出差归来真开心):师傅T_T,你猜是谁把线程退出注释掉了?
韩邵晨(座位H403-7-1):?
谭明明(出差归来真开心):T_T内核最小系统就有问题啊!我好郁闷,当初是谁调试的内核啊。
韩邵晨(座位H403-7-1):看上传记录。
谭明明(出差归来真开心):哦,我给气忘了。我看看是谁啊。
韩邵晨(座位H403-7-1):可以写邮件了。
谭明明(出差归来真开心):是赵亮!
韩邵晨(座位H403-7-1):硬件工程师?
谭明明(出差归来真开心):哈哈哈,师傅别逗了,赵亮8怎么会调内核代码,是赵亮13!
韩邵晨(座位H403-7-1):发邮件吧,先抄送项目经理软件组长。
所谓linux内核最小系统,是使用官方发布的linux内核源码,针对每个项目而做出的内容最少的可调式源码版本。一般只需要保证让cpu运行,时钟计数,以及串口能在电脑上打印出调试日志即可。之后就由各个模块的开发人员逐步把自己的模块代码添加到最小系统中去,直到最后包含所有模块代码和功能。