1996年6月23日至7月1日,我被点名到四川某单位协助排查某系统的技术问题。
我不懂该系统的原理,也不懂硬件,只能从软件角度分析问题。
那时,我所在单位已经为一家美国公司做了3年的软件第三方独立验证和测试,从中学到了代码走查(walkthough)的方法。
我请该单位允许我查看该系统的源程序。该程序的编程语言是X86汇编语言,还好规模不大,走查时间不长。
通过走查,发现以下问题:
- 系统使用A口的输入数据。但B口中断未关闭,并且与A口共用同一个输入缓冲区,导致A口的输入数据偶发性地被破坏。
- 256个中断向量中的未用部分没有填入一个空处理的中断服务程序。
解决以上问题后,系统运行正常。