首頁(yè)>>>技術(shù)>>>交換機  交換/排隊機產(chǎn)品

工程師故事:一段真實(shí)的程式碼除錯經(jīng)歷

2011/03/18

  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)飛行之旅。
  
  我的軟件同事和我還攜帶了示波器和邏輯分析儀。但我們要降落的小鎮機場(chǎng)卻遇上了濃霧,阻礙了行程。我們后來(lái)才知道,最初的能見(jiàn)度幾乎是零,在飛行員不得不中止降落,并經(jīng)歷一次陡峭的爬升之后,跑道的濃霧狀況才有明顯好轉。

  飛機上的迷你酒吧有助平息緊張的神經(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)是否是由硬件故障所導致。

  冗長(cháng)的除錯過(guò)程

  到將近清晨時(shí),目標故障終于浮出水面。我立即停止了CPU追蹤器,我們回頭看著(zhù)寫(xiě)入周期記錄檔。我的軟件同事用他睡眼惺忪的眼睛來(lái)回檢查原始碼列,以及所擷取到的寫(xiě)入到交叉點(diǎn)設備的資料,而后驚呼“這個(gè)值到底是哪來(lái)的?這不是子程序應該寫(xiě)入的!”

  我們小心地檢視常式的原始碼列表,并同意常式是不可能建構出這種位元模式的。“太好了,現在是RAM或CPU匯流排問(wèn)題了…,”我喃喃地說(shuō)。

  該軟件保存了交叉點(diǎn)暫存器的影子RAM緩沖區;現在我們將注意力轉到這個(gè)緩沖區,針對與漂移交叉點(diǎn)對應的特定RAM位置設置了記錄寫(xiě)入周期。經(jīng)過(guò)一個(gè)半小時(shí)的追蹤擷取后,沒(méi)有發(fā)現任何故障的蹤影,我的軟件同事迅速審查愈積愈多的追蹤列表,并發(fā)現了一些東西。“你看!所有的寫(xiě)入看來(lái)都很正常,除了這個(gè);CPU應該沒(méi)有寫(xiě)入資料模式。子程序遮罩了這些位元,所以他們不應該是1s。但這是誰(shuí)寫(xiě)的呢?”

  找到了!Bug就在這里

  我立即設定了CPU追蹤器在非法位元模式的寫(xiě)入上觸發(fā)該緩沖區,而一個(gè)良好的預觸發(fā)擷取區塊讓我們看到了非法寫(xiě)入的起源。

  很快地,罪魁禍首便顯露出來(lái)了,是一個(gè)最近編寫(xiě)的,用來(lái)支援長(cháng)數字串的數字集合緩沖區常式。其緩沖區經(jīng)過(guò)重新定位,但在采集更長(cháng)字串時(shí),它便會(huì )超出到交叉點(diǎn)影子緩沖區。

  由于交叉點(diǎn)設備僅觸及了總可用內部系統音訊通道的一部份,因此一個(gè)壞的位元模式在大部份時(shí)間都是無(wú)害的,只有在特定的埠連接處于活動(dòng)狀態(tài)時(shí)它才會(huì )出現。這輕易地解釋了極低的故障率,以及為何我們無(wú)法在一開(kāi)始就重現它。

  在豐盛的早餐后,我們打電話(huà)回總部轉達我們的調查結果;英國團隊確認會(huì )在數小時(shí)內修補程式。我們在短暫的補眠后就立即飛回家。

  從接到英國團隊第一通電話(huà)開(kāi)始,我們都避免了傳統軟硬件人員互相責怪的情況。這是純粹的團隊精神,讓我們以在最短的時(shí)間內解決問(wèn)題,同時(shí)也避免了一次昂貴的海外之旅。

  本文作者Rick Hille在科技產(chǎn)業(yè)擁有超過(guò)30年的經(jīng)驗,負責多種領(lǐng)域的設計和生產(chǎn)線(xiàn)管理,包括電信設備、視訊桌上型會(huì )議系統、視訊保全系統和網(wǎng)路家電等。他畢業(yè)于Ryerson Polytechnical Institute,目前仍是硬件設計師,任職于高科技產(chǎn)業(yè)。
共 2 頁(yè):1 2 

電子工程專(zhuān)輯



相關(guān)閱讀:
未來(lái)融合通信新載體:iPad與ZPCX 1000U 2011-03-08
程控交換機“上網(wǎng)” 企業(yè)通信可享“零話(huà)費” 2011-01-18
航空代理人呼叫中心,如何隨需而變? 2010-10-18
下一代融合型交換機將呼叫中心引入平臺化時(shí)代(五) 2010-10-15
3G視頻技術(shù)在應急通信中的應用 2010-09-06


亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 三门县| 财经| 福建省| 太和县| 淳化县| 偃师市| 天峻县| 惠来县| 霍林郭勒市| 沂南县| 鄯善县| 绥棱县| 镶黄旗| 武宁县| 南昌县| 阜南县| 台东市| 乌兰县| 丹江口市| 呼和浩特市| 页游| 金坛市| 大连市| 丽江市| 舟山市| 北辰区| 瑞金市| 岐山县| 东至县| 轮台县| 宜昌市| 广河县| 林口县| 顺平县| 溧水县| 资阳市| 桑日县| 玉门市| 大方县| 白玉县| 商水县| http://444 http://444 http://444 http://444 http://444 http://444