1980年代初期,我在PABX系統公司擔任硬件工程師,當時(shí),軟件在PABX系統設計中已經(jīng)占據主導地位了,因此,來(lái)自浮動(dòng)閘輸入的程式碼漂移線(xiàn)(errant line)也可能輕易地導致錯誤。在不斷聽(tīng)到硬件和軟件設計師激烈的交相指責后,我發(fā)誓,在我的除錯過(guò)程中絕不要再重蹈這些覆轍。正是抱持著(zhù)這種想法,才有了以下這段真實(shí)故事。
故事開(kāi)始于一通來(lái)自我們公司英國辦事處的電話(huà),主要內容是抱怨一些最新發(fā)布的硬件,或是由PABX的產(chǎn)品所引發(fā),在隨機通話(huà)中出現的單向通話(huà)(one-way audio)情況。此外,盡管并非經(jīng)常出現,但在分機之間的通話(huà)可能會(huì )在PABX系統運作中接收到來(lái)自其他通話(huà)的音訊,這個(gè)問(wèn)題很令人擔心,因為它可能潛藏著(zhù)法律責任。
一通來(lái)自倫敦的電話(huà)
CEO很關(guān)注這個(gè)問(wèn)題,而我們則拼命地試圖在總部實(shí)驗室復制問(wèn)題,但并沒(méi)有成功。很快,最后的決定是我和軟件設計師必須立即飛到英國以設法解決問(wèn)題。CEO隨后設法讓我的護照在僅僅幾天內更新,因此,軟件設計師和我在那個(gè)周末都準備好飛到英國了。
在前一個(gè)周五下午,我們的CEO把我們叫到他的辦公室,我們發(fā)現,我們位在美國東南部的技術(shù)支援專(zhuān)家已經(jīng)成功地復制了同樣的問(wèn)題。我們的總裁當晚因為這個(gè)問(wèn)題趕回公司,CEO也安排在當晚將我們送到美國技術(shù)支持辦公室。我急忙打包行李,踏上了我首次的里爾噴射機(Lear jet)飛行之旅。
飛機上的迷你酒吧有助平息緊張的神經(jīng)。幾小時(shí)后,我們終于坐上計程車(chē)前往辦公室,當時(shí)我們已經(jīng)足夠清醒,能與司機就美國政 治到參戰等極端觀(guān)點(diǎn)任意辯論。過(guò)了午夜后,我們終于扺達,并短暫的睡眠后直奔辦公室而去。
立即檢查程式碼
這個(gè)辦公室擁有的PABX設備具備能夠產(chǎn)生流量的特殊軟件,可驅動(dòng)第二部測試中的PABX設備。盡管我們已經(jīng)在我們的實(shí)驗室中使用相同的測試軟件進(jìn)行相同的設置,但這套系統不知為何,每隔幾小時(shí)便會(huì )產(chǎn)生一次故障。我們花了24小時(shí)仔細研究這套系統,一次次地檢查訊號,擷取執行中的CPU程式碼并重新讀取組合語(yǔ)言程式碼。
一切似乎沒(méi)有什么不妥,但錯誤仍然接連發(fā)生。幸運的是,我們發(fā)現一個(gè)罕見(jiàn)但不斷重復的特定音訊故障,這將我們的關(guān)注范圍縮小到了系統中的特定音訊交叉點(diǎn)。這種特殊的音訊故障是指引我們的最佳明燈,我立即設置了分析儀的CPU追蹤器以擷取這個(gè)可疑音訊交叉點(diǎn)設備的暫存器寫(xiě)入周期。到當天深夜,疲勞和煩躁一度讓我過(guò)早做出結論:我們在追逐的是一個(gè)軟件故障。不過(guò)我并未說(shuō)出口,而是重新考慮這個(gè)導致錯誤狀態(tài)的交叉點(diǎn)是否是由硬件故障所導致。
共 2 頁(yè):1 2
電子工程專(zhuān)輯