本文分享一个编码经验:多全局搜搜代码
故事:
大约两年前一个大功能发布以后,客户反馈客户端报错。
Fault occurred in BASIC program T1 at address 3a. Segmentation fault (core dumped)
重现步骤也有,类似如下的一个BASIC程序:
OPENSEQ "BP","PRM1" TO FILE1 ELSE ABORT
FILE2 = FILE1
WRITESEQ "EEEEEEEEEEE" ON FILE1 ELSE ABORT
WRITESEQ "FFFFFFFFFFF" ON FILE2 ELSE ABORT
CLOSESEQ FILE2
CLOSESEQ FILE1
STOP
大家也不必细读各行代码(语法格式是我们特有的),就是第二行一个简单的赋值语句导致的core dump。
root cause:
在开发一个大功能时,有一段代码忘记改了。给我们的教训就是:在改数据结构时,把里面其它的原有成员都全局搜一搜,看看需不需要也加上新代码?也许什么功能你没考虑到而被影响了哪?
不方便贴代码,就简单分享这么一个经验吧。