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