摘 要:在計算機領(lǐng)域中,嵌入式應(yīng)用程序中出現(xiàn)的內(nèi)存錯誤對于系統(tǒng)的正常運行起到了阻礙作用,這就需要我們使用檢測技術(shù)對錯誤進行檢測。內(nèi)存錯誤主要是指在應(yīng)用程序中出現(xiàn)的讀寫內(nèi)存單元問題,或者是在執(zhí)行內(nèi)存相關(guān)操作時所出現(xiàn)的一系列錯誤,這是導致絕大多數(shù)軟件發(fā)生紊亂的根本原因。在程序的運行期間較難尋找這些錯誤,在進行軟件的調(diào)試過程中很有可能因為某些內(nèi)存錯誤而阻斷程序的運行。因此我們需要對應(yīng)用程序的內(nèi)存設(shè)計一定的檢測技術(shù),通過這種技術(shù)避免一些內(nèi)存問題的出現(xiàn)。本文對這種內(nèi)存檢測技術(shù)作出了基本的研究與總結(jié)。
關(guān)鍵詞:嵌入式;內(nèi)存錯誤;緩沖區(qū)溢出;靜態(tài)檢測技術(shù)
一、嵌入式應(yīng)用程序的系統(tǒng)性概述
嵌入式系統(tǒng)是一種從國外引進的一種控制與檢測機器、裝置等的設(shè)備。這種嵌入式系統(tǒng)在國內(nèi)也有了許多應(yīng)用,并對于國內(nèi)的裝置檢測作出了重要的貢獻。國內(nèi)對于這種系統(tǒng)的介紹較為詳細,是以應(yīng)用為中心,結(jié)合計算機網(wǎng)絡(luò)基礎(chǔ)進行的一種對應(yīng)用系統(tǒng)檢測,并在計算機系統(tǒng)中發(fā)揮著重要的監(jiān)控作用。在嵌入式系統(tǒng)中,由于系統(tǒng)具有高度的集中化,因此在實際應(yīng)用中往往是將軟件或者硬件在系統(tǒng)中進行嵌入通過一個個小系統(tǒng)的構(gòu)建,集成到一個較為大的系統(tǒng)之中并發(fā)揮各自的作用。這種嵌入式系統(tǒng)與以往的計算機系統(tǒng)相比具有多方面的使用便捷性,例如所使用的硬件、軟件的集成度存在較高的水平。但是,在嵌入式系統(tǒng)面向特定應(yīng)用時,還是會具有資源有限的不利條件。[1]我們應(yīng)該從實際出發(fā)對這種系統(tǒng)作出全面的分析,了解系統(tǒng)的利弊,并結(jié)合實踐應(yīng)用設(shè)計合理的系統(tǒng),促進計算機系統(tǒng)的穩(wěn)定發(fā)展。
由于嵌入式系統(tǒng)與以往的計算機應(yīng)用系統(tǒng)相比具有資源有限的特點,因此在對于嵌入式系統(tǒng)的軟件開發(fā)過程中具有與以往的計算機系統(tǒng)不同的特點。例如在嵌入式系統(tǒng)進行硬件平臺的選擇時,常常需要使用專門的微處理器或者是其他設(shè)備對系統(tǒng)進行特定的處理,因此對硬件平臺的專用性水平要求較高。除此之外,由于嵌入式系統(tǒng)中的硬件與軟件的開發(fā)是同步進行的,因此在初期可能會出現(xiàn)系統(tǒng)穩(wěn)定性較低或者是使用平臺不確定的現(xiàn)象發(fā)生。
二、應(yīng)用程序中的內(nèi)存錯誤分析之緩沖區(qū)溢出
在程序的內(nèi)存可能出現(xiàn)的錯誤中,有很多錯誤都會對程序的正常與穩(wěn)定運行具有一定的不良影響,干擾程序的正常運行。以下主要對程序內(nèi)存錯誤的代表性錯誤作出分析,即緩沖區(qū)溢出的內(nèi)存錯誤分析。
這種錯誤主要是由于緩存區(qū)的緩存數(shù)據(jù)具有一定的限度引起的,而當數(shù)據(jù)超過這個容量之時便會出現(xiàn)緩存區(qū)數(shù)據(jù)溢出的后果。這種錯誤會使多余的數(shù)據(jù)在其他的內(nèi)存單元進行區(qū)域覆蓋,造成了極大的程序系統(tǒng)漏洞。在計算機的程序中,任何一種漏洞的出現(xiàn)都可能被黑客或者其他計算機程序攻擊者利用,給計算機系統(tǒng)安全帶來了極大的威脅。由于程序設(shè)計人員對于安全編程的應(yīng)用與防范意識過差,因此可能會給計算機程序入侵者提供機會,給惡意代碼的侵入制造機會,進而會更改程序的執(zhí)行流程,極大的破壞了計算機系統(tǒng)的安全穩(wěn)定性。[2]這種緩存區(qū)溢出的問題作為程序內(nèi)存錯誤中一個重要的問題,應(yīng)當引起無論是軟件開發(fā)人員還是技術(shù)檢測人員的強烈關(guān)注。如下圖。
三、嵌入式應(yīng)用程序內(nèi)存中的靜態(tài)檢測技術(shù)
作為在軟件錯誤檢測中的一種極為重要的檢測技術(shù),靜態(tài)檢測技術(shù)是一種較為普遍使用的檢測技術(shù),在實際的軟件錯誤分析中占據(jù)一定的地位。這種檢測技術(shù)一般從詞法語法或者其他方面對相應(yīng)的文件進行檢測與分析,這種檢測技術(shù)的好處是不但可以對源代碼進行檢測,也可以對二進制文件進行一定的檢測。這種方式的可靠性與安全性都比較高。但是,對于程序進行的這種靜態(tài)測試,其實不不是為了檢驗程序的正確與否,而是起到了一個作為動態(tài)檢測的輔助操作。在程序投入使用之前,往往會先對程序進行檢測,對可能存在的隱患作出分析,并發(fā)現(xiàn)程序中存在的錯誤與程序漏洞,這樣才能對程序進行一定的改進,防止程序在正式投入后出現(xiàn)一系列無法補救的問題。這種靜態(tài)檢測的檢測范圍是十分廣泛的,覆蓋軟件的范圍極廣,因此在應(yīng)用程序中的應(yīng)用型特別強。
靜態(tài)檢測技術(shù)可以在較早的時間里對嵌入式系統(tǒng)程序進行分析,及時發(fā)現(xiàn)程序中的內(nèi)存錯誤并作出防范或者改正措施。由于軟件開發(fā)的生命周期是有一定限度的,因此我們需要在軟件投入使用之前做好軟件的調(diào)試準備,及時地對可能存在地隱患作出錯誤分析,以便在運行時可以重新對系統(tǒng)進行審查。[3]這樣可以及時地發(fā)現(xiàn)軟件中存在地錯誤,以防止對于以后地錯誤維護而付出不必要地高昂費用,另外,快速有效地發(fā)現(xiàn)錯誤,對技術(shù)開發(fā)人員及時維護系統(tǒng)漏洞具有很大地幫助。由于靜態(tài)檢測可以直接對代碼進行檢查,因此有些靜態(tài)分析技術(shù)可以直接在代碼段上應(yīng)用,在代碼編輯完成之前就能對代碼錯誤作出全面地掌握。
靜態(tài)檢測的缺點主要表現(xiàn)在對于軟件內(nèi)存錯誤的分析上,可能會產(chǎn)生較高的錯誤誤報或者時漏報的不良后果。不利于對程序的錯誤作出全面的掌握。這給檢測人員的檢測工作帶來了極大的不便,因此對于檢測的精確度造成了重大影響。這對整個系統(tǒng)的穩(wěn)定性是極為不利的。
四、總結(jié)
通過靜態(tài)檢測技術(shù)的應(yīng)用,我們得出了一套研究程序中內(nèi)存問題的基本方法,并通過對緩沖區(qū)溢出問題的有效分析,闡釋出緩沖區(qū)溢出的原理以及相關(guān)解決方法。通過對此種技術(shù)的研究設(shè)計系統(tǒng)的檢測方案,解決在應(yīng)用程序中發(fā)現(xiàn)的內(nèi)存錯誤問題。
參考文獻:
[1]李肖堅,鐘達夫,夏冰,唐懿芳.緩沖區(qū)溢出原理及植入代碼的分析研究[J].計算機應(yīng)用研究,2007(01).
[2]張威,盧慶齡,李梅,宮云戰(zhàn).基于指針分析的內(nèi)存泄露故障測試方法研究[J].計算機應(yīng)用研究,2006(10).
[3]張威,盧慶齡,萬琳,肖慶.空指針引用故障模型與測試方法研究[J].計算機工程與應(yīng)用,2006(04).
作者簡介:劉勇(1989-),漢族,江西撫州樂安縣人,電控工程師,研究方向:嵌入式應(yīng)用。