两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

處理飛行器機(jī)載系統(tǒng)的運(yùn)行軟件在調(diào)試階段期間處理的信息容量的方法和實(shí)施該方法的設(shè)備的制作方法

文檔序號(hào):6478319閱讀:266來源:國知局
專利名稱:處理飛行器機(jī)載系統(tǒng)的運(yùn)行軟件在調(diào)試階段期間處理的信息容量的方法和實(shí)施該方法的設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及的是一種處理飛行器機(jī)載系統(tǒng)的運(yùn)行軟件在調(diào)試階段期間所處理的 信息容量的方法。這個(gè)方法使得開發(fā)人員可以大大地減少信息容量,并因此大大地減少搜 索和改正要安裝的系統(tǒng)的運(yùn)行軟件的錯(cuò)誤所必需的存儲(chǔ)器資源。本發(fā)明的優(yōu)越適用不僅限于航空領(lǐng)域,并尤其適用于所安裝系統(tǒng)的運(yùn)行的軟件測 試領(lǐng)域。
背景技術(shù)
出于安全的考慮,用來安裝在飛行器上的系統(tǒng)需要接受運(yùn)行是否良好的檢驗(yàn),在 檢驗(yàn)中系統(tǒng)必需符合一些認(rèn)證的要求。這在安裝有類似系統(tǒng)的飛行器被授權(quán)進(jìn)行飛行并甚 至是投入商業(yè)服務(wù)之前進(jìn)行。安裝前,這些系統(tǒng)要經(jīng)受一些測試以檢驗(yàn)是否符合認(rèn)證權(quán)威機(jī)構(gòu)制定的完整性和 安全性要求。這些機(jī)載系統(tǒng)可以尤其是一些特殊的計(jì)算機(jī),用來實(shí)現(xiàn)一些對飛行器很重要 的功能,例如,領(lǐng)航功能。這些系統(tǒng)在下文中被稱作計(jì)算機(jī)。在現(xiàn)有系統(tǒng)的架構(gòu)中,最常見的是每個(gè)計(jì)算機(jī)都可以用于同樣性質(zhì)的一種或多種 應(yīng)用,例如控制飛行的應(yīng)用。每個(gè)計(jì)算機(jī)都包括一個(gè)硬件部分和一個(gè)軟件部分。硬件部分 包括至少一個(gè)中央處理單元(CPU)和至少一個(gè)輸入/輸出單元,計(jì)算機(jī)通過這個(gè)單元與一 個(gè)計(jì)算機(jī)網(wǎng)絡(luò)和一些外圍設(shè)備等等連接。通常在航空領(lǐng)域中使用的機(jī)載系統(tǒng)的一個(gè)主要特征是,不論其硬件還是軟件的結(jié) 構(gòu),都盡量避免引入執(zhí)行上述系統(tǒng)的功能所需之外的任何裝置。因此,與普及的應(yīng)用中通常碰到的系統(tǒng)相反的是,在航空領(lǐng)域,計(jì)算機(jī)不具備復(fù)雜 的操作系統(tǒng)。另外,軟件使用的語言與中央處理單元能理解的語言盡量接近,唯一可得到的 輸入/輸出是系統(tǒng)運(yùn)行所必需的,如來自飛行器傳感器或其他部件的信息,或發(fā)送到驅(qū)動(dòng) 器或其他部件的信息。這種架構(gòu)的優(yōu)勢在于這種系統(tǒng)的運(yùn)行非常便于控制。它并不依賴一個(gè)復(fù)雜的操作 系統(tǒng),復(fù)雜的操作系統(tǒng)的多方面的運(yùn)行都要根據(jù)不可控制的參數(shù)并且否則這些系統(tǒng)往往成 為和應(yīng)用軟件同樣的安全示范。這種系統(tǒng)簡單不易受攻擊,因?yàn)樗话ㄒ恍﹫?zhí)行該系統(tǒng) 的功能嚴(yán)格所必需的裝置。相對地,這種系統(tǒng)的運(yùn)行也非常難以進(jìn)行觀察。例如,這個(gè)系統(tǒng)不包括通常的人/ 機(jī)接口例如鍵盤和屏幕用來檢驗(yàn)是否正確執(zhí)行指令序列以及對執(zhí)行進(jìn)行調(diào)整,這就使得在 軟件的開發(fā)、檢驗(yàn)和評(píng)定中難以進(jìn)行一些必不可少的檢驗(yàn)。計(jì)算機(jī)的軟件包括一個(gè)專用于所考慮的應(yīng)用并保證計(jì)算機(jī)運(yùn)行的軟件,軟件指令 要與確定系統(tǒng)的運(yùn)行的算法相符。在系統(tǒng)和飛行器使用前,為了認(rèn)證系統(tǒng),要有一個(gè)對計(jì)算機(jī)進(jìn)行生效確認(rèn)的階段。眾所周知,生效確認(rèn)階段主要在于,在計(jì)算機(jī)操作過程的每個(gè)步驟,檢驗(yàn)計(jì)算機(jī)是否符合設(shè)立的技術(shù)規(guī)范,使得上述計(jì)算機(jī)滿足系統(tǒng)期待的運(yùn)行。尤其對軟件而言,要通過一系列的步驟來實(shí)現(xiàn)符合技術(shù)規(guī)范,從軟件的最簡單組件的檢驗(yàn)到包括所有組件的整個(gè)完整軟件安裝在目標(biāo)計(jì)算機(jī)中。在第一個(gè)步驟,對可被測試的最簡單的軟件部件進(jìn)行所謂的單元測試。在這些測 試過程中,檢驗(yàn)所述軟件部件的邏輯指令即代碼單獨(dú)地是否都與設(shè)計(jì)要求相符。在第二個(gè)步驟,即綜合步驟,將已經(jīng)分別接受檢驗(yàn)的不同軟件部件集合,形成軟件 部件相互作用的一個(gè)整體。對這些不同的軟件部件進(jìn)行整體性測試以確定這些軟件部件尤 其在上述部件的功能接口處是相容的。在第三個(gè)步驟,軟件部件整體安裝在專門的計(jì)算機(jī)中。從而,進(jìn)行一些生效確認(rèn)實(shí) 驗(yàn)以顯示由集成在計(jì)算機(jī)中軟件部件整體組成的軟件是否符合設(shè)備技術(shù)規(guī)范,即軟件能完 成預(yù)期的功能,以及運(yùn)行可靠安全。為了保證軟件的安全和滿足認(rèn)證的要求,在這個(gè)生效確認(rèn)階段,這個(gè)系統(tǒng)進(jìn)行的 整個(gè)測試同樣必需能夠以足夠的概率得出軟件與其所處的系統(tǒng)規(guī)定的安全要求相符。在生效確認(rèn)階段對軟件進(jìn)行的不同測試可以保證軟件不會(huì)出現(xiàn)任何一種功能不 良(會(huì)對計(jì)算機(jī)的運(yùn)行良好產(chǎn)生影響,從而影響飛行器及其安全)或者一旦出現(xiàn)功能不良 軟件能夠及時(shí)控制。然而,在生效確認(rèn)階段,尤其是當(dāng)檢驗(yàn)到異常進(jìn)行研究時(shí),不僅需要保證安裝軟件 的計(jì)算機(jī)的輸入和輸出參數(shù)與期待相符,而且要保證軟件內(nèi)部的一些性能良好。在這種情況下,鑒于所安裝應(yīng)用的專用計(jì)算機(jī)的特殊結(jié)構(gòu),不使用特殊設(shè)備和方 法時(shí)通常很難觀察軟件的運(yùn)行。已知的第一種方法在于使用仿真器在所測試的安裝有軟件的計(jì)算機(jī)和一個(gè)平臺(tái) 之間建立一個(gè)文件分配系統(tǒng)。通過仿真器,一個(gè)設(shè)備能夠在連接的平臺(tái)上模擬計(jì)算機(jī)處理 器的一個(gè)計(jì)算單元的邏輯運(yùn)行。在使用仿真器的這樣一個(gè)運(yùn)行模式中,計(jì)算機(jī)的處理器可以用一個(gè)檢測器代替, 這個(gè)檢測器保證與帶有處理器的仿真功能的相連接平臺(tái)接口。這樣,就可以通過連接平臺(tái)的自身功能,在除處理器部分外的計(jì)算機(jī)上,執(zhí)行要測 試的軟件,觀測軟件的運(yùn)行或一些內(nèi)部運(yùn)行不良,例如,輸入/輸出部件的輸入的刺激所引 起的不良,還能觀測上述的輸入/輸出部件的輸出。這個(gè)方法存在一些不足。事實(shí)上,要測試的計(jì)算機(jī)的任何類型都需要一個(gè)特別的 測試臺(tái)或者測試臺(tái)的至少一個(gè)專門配置。測試臺(tái)是一個(gè)尤其包括一些與要測試的計(jì)算機(jī)相 互連接的裝置和一些模擬計(jì)算機(jī)處理器的裝置以及執(zhí)行測試程序的裝置的組合。既然每個(gè)處理器都需要一個(gè)特殊的仿真器,不論是仿真軟件還是代替處理器的相 應(yīng)的檢測器,那么需要增加符合計(jì)算機(jī)的性質(zhì)的仿真器。另外,一般根據(jù)仿真器進(jìn)行研究的可能性比較受限。再加上必需使用與所檢驗(yàn)的 處理器的特殊機(jī)器語言意味著程序員必須是一個(gè)機(jī)器語言程序設(shè)計(jì)專家。另外,仿真器成本昂貴,一般只會(huì)小批量生產(chǎn)。這類產(chǎn)品的生命周期也很短暫(6 個(gè)月至2年),而為了延長飛機(jī)程序的周期(20年,甚至更久),在操作條件下需要對運(yùn)作和 檢查裝置進(jìn)行維護(hù)(根據(jù)條例,工業(yè)反應(yīng)性)。這表現(xiàn)為越來越難解決的廢舊處理問題。因此這種仿真器的解決方案并不具有很好的實(shí)用性,因?yàn)椋嗽跈z查研究方面的表現(xiàn)欠佳,它的使用和維護(hù)成本還很高。成本還可能增加的原因在于一般地出于安全設(shè)計(jì)理念,要使用處理器的不同模型 以確保運(yùn)行冗余,這就要求同樣多的仿真器。
第二種排除仿真器問題的方法在于,在執(zhí)行要測試的程序前,在主平臺(tái)上模擬計(jì) 算機(jī)的運(yùn)行。在這種情況下,為了讀取測試的矢量或?yàn)榱擞涗洔y試的結(jié)果,要測試的軟件應(yīng) 當(dāng)訪問主平臺(tái)的文件。因?yàn)橐獪y試的軟件自身并不包括類似的訪問主平臺(tái)的文件系統(tǒng)的功能,所以需要 改進(jìn)要測試的軟件,增加這些訪問功能。為了轉(zhuǎn)移這些信息,人們一般使用由模擬測試環(huán)境發(fā)出的調(diào)用系統(tǒng)的指令。調(diào)用 系統(tǒng)的指令可以是,例如打開文件,寫入文件或者甚至是讀取文件。調(diào)用系統(tǒng)指令通過主平 臺(tái)操作系統(tǒng)捕獲,并將其轉(zhuǎn)換為主平臺(tái)的系統(tǒng)調(diào)用。這個(gè)第二種方法也同樣存在一些不足。事實(shí)上,文件種類過多導(dǎo)致訪問功能性的 運(yùn)作十分依賴主平臺(tái)及其操作系統(tǒng)。然而,主平臺(tái)不僅在空間上(世界各地分布的操作設(shè) 備的情況)而且在時(shí)間上(主平臺(tái)替換)的變化性是很大的,這就給這種方法的實(shí)際操作 帶來困難。這些困難更加嚴(yán)重,還因?yàn)樵L問文件系統(tǒng)的類似功能性的運(yùn)作,同樣需要能夠改 進(jìn)操作系統(tǒng)功能的專家的技能,因此一些進(jìn)行實(shí)驗(yàn)的專家并不具備。因此,這種方法成本過高,很難實(shí)施。另外這種方法對要測試的軟件具有損害性,而且為了進(jìn)行這些測試而修改軟件會(huì) 出現(xiàn)軟件本身運(yùn)行中斷的風(fēng)險(xiǎn)。在計(jì)算機(jī)確認(rèn)階段,即這些測試階段,會(huì)出現(xiàn)運(yùn)行軟件的執(zhí)行中斷。這種中斷表現(xiàn) 為運(yùn)行軟件的運(yùn)行中斷或者軟件在無限的指令循環(huán)中阻塞。程序員這時(shí)應(yīng)該在指令代碼行 中搜索出異常或錯(cuò)誤,以期改正。通過如下一種執(zhí)行完成此項(xiàng)搜索其中執(zhí)行路徑的連續(xù)點(diǎn) 的順序與按正常執(zhí)行的順序相反。換句話說,回溯(remonter) —個(gè)代碼行的序列,在其中 搜索錯(cuò)誤(即返回已經(jīng)執(zhí)行的但是包括一個(gè)或幾個(gè)錯(cuò)誤的代碼行的序列中),然后再重新 執(zhí)行這個(gè)回溯序列。這種搜索稱為反向執(zhí)行。這種反向執(zhí)行要求,在一個(gè)指令代碼行序列形成的運(yùn)行軟件執(zhí)行路徑的任一點(diǎn) 上,程序員都了解指令代碼行的進(jìn)展。否則,程序員就不知道在執(zhí)行路徑的哪個(gè)位置出現(xiàn)錯(cuò) 誤。因此他也不知道應(yīng)當(dāng)在多少個(gè)執(zhí)行代碼行上進(jìn)行反向執(zhí)行。另外,對于機(jī)載軟件,反向 執(zhí)行應(yīng)該與正常執(zhí)行使用同樣的語言,即機(jī)器語言。因此對程序員來說很難理解運(yùn)行軟件 的程序進(jìn)展以回溯序列和找出錯(cuò)誤。另外,沒有任何一種反向執(zhí)行的控制或追蹤裝置能夠 保證程序員知道應(yīng)該回溯到有缺陷的序列的哪里以便找出錯(cuò)誤或異常??紤]到這種復(fù)雜性,這種搜索錯(cuò)誤的方法需要幾小時(shí)到幾天不等的大量時(shí)間,不 論在生產(chǎn)力還是勞動(dòng)力方面,這都相對提高了調(diào)試階段的成本。另外,為了能夠進(jìn)行程序的反向執(zhí)行,最好提前捕獲然后重建程序執(zhí)行狀態(tài)的信 息。捕獲的這些信息將全部存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中以便日后重新生成。但是,程序執(zhí)行路徑 會(huì)很長,被操作和存儲(chǔ)的數(shù)據(jù)量很大,這對存儲(chǔ)器資源的容量提出了要求。為了解決上面陳述的不同問題,人們已經(jīng)提出了幾種解決方案。第一種方案在于 壓縮整個(gè)操作數(shù)據(jù)。這個(gè)方案不太有效,因?yàn)閴嚎s的系數(shù)是隨意的(根據(jù)不同的操作數(shù)據(jù)而變化)。而且,在壓縮操作后,對于壓縮數(shù)據(jù)增加的成本,獲得的存儲(chǔ)空間的收益相對較 小。第二種方案在于只捕獲嚴(yán)格需要的數(shù)據(jù)以減少數(shù)據(jù)。在這種方案中使用的方法是 寫時(shí)才拷貝(英語為copy-on-write)。這種方案建立在信息計(jì)數(shù)的有規(guī)律檢驗(yàn)上,從而只 捕獲修改后的數(shù)據(jù)頁面,這就保證了用于隨后重新生成的信息的最小化。與第一種方案不同,這種捕獲的成本是最小的;相對地,由此要做的重新生成就需要一個(gè)相對長的時(shí)間,尤其在一個(gè)交互調(diào)試活動(dòng)期間,因?yàn)閺某绦蜷_始,對最初執(zhí)行狀態(tài)的 每次重建都需要所有捕獲的控制點(diǎn)。

發(fā)明內(nèi)容
本發(fā)明旨在解決上述的不便。為此,本發(fā)明提出一種處理在機(jī)載系統(tǒng)的運(yùn)行軟件 調(diào)試階段所操作的信息容量的方法。本發(fā)明的方法保證可以減少和最優(yōu)化用于機(jī)載系統(tǒng)的存儲(chǔ)器資源的需求量。為 此,本發(fā)明的方法提出將運(yùn)行程序的執(zhí)行路徑切割成多個(gè)函數(shù)區(qū)間,捕獲與被測試的軟件 的給定位置的執(zhí)行狀態(tài)相關(guān)的信息,隨后重建這些信息。更為確切地,本發(fā)明涉及一種處理機(jī)載系統(tǒng)的運(yùn)行軟件的程序在調(diào)試階段所處理 的信息容量的方法,其特征在于包括以下步驟a)通過在程序的每個(gè)函數(shù)上布置行進(jìn)點(diǎn),將所述運(yùn)行程序的執(zhí)行路徑切割成多個(gè) 函數(shù)區(qū)間,b)設(shè)置與每個(gè)行進(jìn)點(diǎn)相關(guān)聯(lián)的控制點(diǎn),c)正常執(zhí)行程序,其中進(jìn)行以下操作-存儲(chǔ)程序在每個(gè)行進(jìn)點(diǎn)位置處的執(zhí)行狀態(tài),-存儲(chǔ)執(zhí)行狀態(tài)使得刪除前面存儲(chǔ)的所述行進(jìn)點(diǎn)的執(zhí)行狀態(tài),-當(dāng)檢測到錯(cuò)誤時(shí)搜索與有缺陷的函數(shù)相對應(yīng)的行進(jìn)點(diǎn),搜索程序開始時(shí)執(zhí)行狀態(tài),重新生成這個(gè)開始執(zhí)行狀態(tài),改正這個(gè)有缺陷的函數(shù)中的錯(cuò)誤,和重新執(zhí)行程序。本發(fā)明還可以包括一個(gè)或幾個(gè)以下特征-唯一的執(zhí)行狀態(tài)被同時(shí)存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中。-在正常執(zhí)行一個(gè)函數(shù)后,與這個(gè)函數(shù)相對應(yīng)的行進(jìn)點(diǎn)從非活躍狀態(tài)過渡為活躍 狀態(tài)。_搜索有缺陷的函數(shù)在于搜索最近的活躍行進(jìn)點(diǎn)。-存儲(chǔ)行進(jìn)點(diǎn)及其狀態(tài)的列表。本發(fā)明同樣涉及一種模擬飛行器的機(jī)載計(jì)算機(jī)的運(yùn)行的設(shè)備,其特征在于實(shí)施上 述的方法。這個(gè)設(shè)備可以包括能夠存儲(chǔ)程序執(zhí)行狀態(tài)的數(shù)據(jù)存儲(chǔ)器。本發(fā)明還涉及一種用于飛行器的機(jī)載系統(tǒng)的可加載在控制單元上的運(yùn)行軟件的程序,包括當(dāng)程序被加載在控制單元上并執(zhí)行時(shí)用于執(zhí)行上述的方法的指令序列。


在閱讀以下說明之后并且在研究附圖之后,將更好地理解本發(fā)明。這些不作為對本發(fā)明的限制的說明。圖1示出本發(fā)明的方法的功能示意2a和2b示出執(zhí)行本發(fā)明方法的設(shè)備的示意圖。
具體實(shí)施例方式運(yùn)行軟件由一組程序組成。程序由一組寫指令序列組成,稱叫指令串序列。這些 指令串通常按出現(xiàn)順序執(zhí)行,即從第一個(gè)指令到最后一個(gè)指令。這些按出現(xiàn)順序執(zhí)行的指 令串組成了程序的正常執(zhí)行路徑。為了有效地調(diào)試程序,即搜索和改正程序的錯(cuò)誤、設(shè)計(jì)的紕漏和運(yùn)行的異常,本發(fā) 明的方法提出,在程序執(zhí)行路徑中布置標(biāo)記以便相對于這些標(biāo)記確定哪里出現(xiàn)了錯(cuò)誤或異 常。標(biāo)記是位于程序特別位置的虛擬方位標(biāo)。這些位置,例如,與程序不同函數(shù)(fonction) 的開始和結(jié)束相對應(yīng)。一個(gè)函數(shù)就是一個(gè)指令序列,整體上使得可以進(jìn)行一個(gè)特殊操作。一 個(gè)緊跟一個(gè)地執(zhí)行程序的這些函數(shù)。標(biāo)記放置于,例如,程序函數(shù)的每個(gè)輸入或輸出點(diǎn)。當(dāng) 標(biāo)記位于每個(gè)程序函數(shù)的輸入或輸出處,這些標(biāo)記就實(shí)現(xiàn)了程序的函數(shù)設(shè)標(biāo)。每個(gè)標(biāo)記都包括一個(gè)行進(jìn)點(diǎn)和控制點(diǎn)。行進(jìn)點(diǎn)是可以位于程序特殊位置的虛擬方位標(biāo)。程序中的行進(jìn)點(diǎn)的位置即上述的 標(biāo)記的位置。當(dāng)執(zhí)行程序時(shí),行進(jìn)點(diǎn)構(gòu)成了方位標(biāo)的點(diǎn)。然后,在程序運(yùn)行中斷后的反向 執(zhí)行情況下(當(dāng)碰到一次或幾次異?;蝈e(cuò)誤時(shí)),行進(jìn)點(diǎn)組成程序執(zhí)行路徑的進(jìn)程的重啟 (reprise)點(diǎn)。事實(shí)上,在程序執(zhí)行路徑上,行進(jìn)點(diǎn)規(guī)則地分布,這保證了可以簡單快速地找 出碰到的錯(cuò)誤或異常。這個(gè)分布可以是函數(shù)類型的,即行進(jìn)點(diǎn)將程序的執(zhí)行路徑切割成多 個(gè)相鄰的函數(shù)區(qū)間。每個(gè)標(biāo)記的控制點(diǎn)都是對應(yīng)于存儲(chǔ)器中的一個(gè)圖像的狀態(tài)的矢量,在該存儲(chǔ)器中 存儲(chǔ)了執(zhí)行程序時(shí)使用的不同數(shù)據(jù)??刂泣c(diǎn)顯示在給定位置,即程序中標(biāo)記所處的位置,的 程序的執(zhí)行狀態(tài),這樣可以隨后重新初始化包括控制點(diǎn)信息的存儲(chǔ)器??刂泣c(diǎn)與每個(gè)行進(jìn) 點(diǎn)相關(guān)聯(lián)。位于兩個(gè)暫時(shí)連續(xù)的標(biāo)記之間的程序執(zhí)行所參考的信息的整體組成控制點(diǎn)。這 個(gè)整體是重新執(zhí)行兩個(gè)標(biāo)記之間的程序的最小、必需而足夠的信息整體。每個(gè)行進(jìn)點(diǎn)都可包括兩個(gè)狀態(tài)一個(gè)活躍狀態(tài)和一個(gè)非活躍狀態(tài)。除其狀態(tài)(活 躍/非活躍)外,行進(jìn)點(diǎn)包括相關(guān)的程序地址以及確定當(dāng)程序執(zhí)行到達(dá)行進(jìn)點(diǎn)的地址時(shí)將 要進(jìn)行處理的信息。在程序運(yùn)行開始時(shí),所有的行進(jìn)點(diǎn)都是非活躍的。所有與行進(jìn)點(diǎn)對應(yīng) 的控制點(diǎn)都是中性的,即它們不包括任何信息。每當(dāng)正常執(zhí)行一個(gè)函數(shù)時(shí),函數(shù)結(jié)束處或下個(gè)函數(shù)入口處的行進(jìn)點(diǎn)的狀態(tài)變得活 躍。那么,與這個(gè)行進(jìn)點(diǎn)相關(guān)聯(lián)的控制點(diǎn)捕獲或存儲(chǔ)程序在行進(jìn)點(diǎn)位置的執(zhí)行狀態(tài)。當(dāng)正常執(zhí)行程序時(shí),在正常執(zhí)行的函數(shù)后(在函數(shù)末端或下一個(gè)函數(shù)入口)的行 進(jìn)點(diǎn)從非活躍狀態(tài)到活躍狀態(tài)。當(dāng)行進(jìn)點(diǎn)轉(zhuǎn)為活躍狀態(tài)時(shí),通過與行進(jìn)點(diǎn)相對應(yīng)的控制點(diǎn) 捕獲程序的執(zhí)行狀態(tài)。換句話說,在程序給定位置的程序執(zhí)行狀態(tài)記錄在數(shù)據(jù)存儲(chǔ)器中。
根據(jù)本發(fā)明,程序的不同執(zhí)行狀態(tài)一個(gè)緊跟一個(gè)地被連續(xù)記錄在同一個(gè)數(shù)據(jù)存儲(chǔ) 器中,從而在數(shù)據(jù)存儲(chǔ)器中只同時(shí)存儲(chǔ)唯一一個(gè)執(zhí)行狀態(tài)。這個(gè)存儲(chǔ)的執(zhí)行狀態(tài)是最后捕 獲的執(zhí)行狀態(tài),即程序在最后的活躍行進(jìn)點(diǎn)位置的執(zhí)行狀態(tài)。事實(shí)上,在本發(fā)明中,人們考 慮到,當(dāng)進(jìn)行反向執(zhí)行時(shí),只有這個(gè)最后的執(zhí)行狀態(tài)的存儲(chǔ)是隨后重新生成程序執(zhí)行狀態(tài) 所必需的。在一種實(shí)施方式下,捕獲執(zhí)行狀態(tài)覆蓋了前面執(zhí)行狀態(tài)的記錄。在另一種實(shí)施 方式下,在每次記錄執(zhí)行狀態(tài)后,刪除前面已經(jīng)記錄的執(zhí)行狀態(tài),數(shù)據(jù)存儲(chǔ)器從而只包括一 個(gè)執(zhí)行狀態(tài),即當(dāng)反向執(zhí)行時(shí)對重啟程序有用的執(zhí)行狀態(tài)。當(dāng)出現(xiàn)錯(cuò)誤時(shí),程序員進(jìn)行程序反向執(zhí)行以在 程序內(nèi)部找到上述的錯(cuò)誤。這種反 向執(zhí)行可以按與程序的正常操作相反的方向回溯程序,以在與最后的活躍行進(jìn)點(diǎn)相對應(yīng)的 第一函數(shù)指令行上重新開始執(zhí)行操作,即最后一個(gè)函數(shù),它的控制點(diǎn)已捕獲程序狀態(tài)信息。存儲(chǔ)行進(jìn)點(diǎn)及其狀態(tài)的列表。這樣,當(dāng)出現(xiàn)程序執(zhí)行的中斷時(shí),找出哪個(gè)是最后的 活躍行進(jìn)點(diǎn),并重新回到與這個(gè)行進(jìn)點(diǎn)相對應(yīng)的程序的位置。然后在數(shù)據(jù)存儲(chǔ)器中搜索記 錄的執(zhí)行狀態(tài)并從這個(gè)位置出發(fā)使用與記錄的執(zhí)行狀態(tài)相關(guān)的數(shù)據(jù)重新執(zhí)行程序。這樣,根據(jù)本發(fā)明,反向執(zhí)行就可以按照行進(jìn)點(diǎn)進(jìn)行,以回溯程序的指令串并確定 缺陷的指令串的位置。反向執(zhí)行可以照這樣在唯一一個(gè)函數(shù)區(qū)間內(nèi)進(jìn)行。當(dāng)在這個(gè)函數(shù)區(qū) 間檢測到一個(gè)缺陷串或錯(cuò)誤時(shí),程序員則找出這個(gè)串中的錯(cuò)誤或異常,然后加以改正。借助于控制點(diǎn),可以在最后一個(gè)活躍的行進(jìn)點(diǎn)處重新執(zhí)行程序。這種程序的重啟 需要取回開始的執(zhí)行狀態(tài)。根據(jù)本發(fā)明,這種執(zhí)行狀態(tài)的取回只需要一個(gè)與執(zhí)行狀態(tài)相對 應(yīng)的空間,如存儲(chǔ)空間。另外,行進(jìn)點(diǎn)和控制點(diǎn)之間的關(guān)聯(lián)保證可以快速地取回開始的執(zhí)行 狀態(tài)。圖1是本發(fā)明的方法的一個(gè)運(yùn)行示意圖實(shí)例。這個(gè)方法包括調(diào)試階段初始化的預(yù) 備步驟31。這個(gè)步驟將對調(diào)試階段良好運(yùn)行有用的不同參數(shù)進(jìn)行重新初始化。在步驟32中,對運(yùn)行的軟件程序的執(zhí)行路徑進(jìn)行規(guī)則、恰當(dāng)?shù)那懈?。這種切割可 以標(biāo)識(shí)與程序的執(zhí)行路徑的整個(gè)區(qū)間相關(guān)聯(lián)的運(yùn)行環(huán)境。在步驟33中,沿著程序的執(zhí)行路徑分布行進(jìn)點(diǎn)以將上述的執(zhí)行路徑切割為函數(shù) 區(qū)間。每個(gè)行進(jìn)點(diǎn)都與一個(gè)控制點(diǎn)相關(guān)聯(lián)。全部行進(jìn)點(diǎn)和控制點(diǎn)形成一個(gè)信標(biāo)系統(tǒng)。每個(gè) 行進(jìn)點(diǎn)都有一個(gè)消極作用;它單獨(dú)形成指示程序執(zhí)行重啟點(diǎn)的指示器。控制點(diǎn)有一個(gè)積極 作用,即它能具有兩種不同的狀態(tài)(活躍或非活躍)。控制點(diǎn)的作用在于捕獲程序在給定位 置和確定時(shí)間的執(zhí)行狀態(tài)。在步驟34中,正常執(zhí)行程序。在步驟35中對程序進(jìn)行一個(gè)測試循環(huán)。在這個(gè)步 驟35中,檢測在行進(jìn)點(diǎn)上的通過。如果在程序執(zhí)行期間檢測到在一個(gè)行進(jìn)點(diǎn)上的通過,即 如果一個(gè)行進(jìn)點(diǎn)被通過,執(zhí)行步驟36。在相反的情況下,反復(fù)執(zhí)行步驟34。在步驟36中,捕獲程序在給定位置的執(zhí)行狀態(tài)。在步驟37中存儲(chǔ)這個(gè)捕獲的程 序的執(zhí)行狀態(tài)。步驟38旨在檢測程序中的錯(cuò)誤。如果檢測出程序中的錯(cuò)誤,那么執(zhí)行步驟39,如 果沒有則執(zhí)行步驟40。在步驟39中,程序的執(zhí)行中止。在步驟41中,確定程序執(zhí)行開始時(shí)的狀態(tài)。這個(gè) 執(zhí)行開始時(shí)的狀態(tài)是在步驟37中記錄在數(shù)據(jù)存儲(chǔ)器中的最后執(zhí)行狀態(tài)。在步驟42中,重新生成執(zhí)行開始時(shí)的狀態(tài),即執(zhí)行的最近一個(gè)沒有錯(cuò)誤的函數(shù)結(jié)束時(shí)程序的執(zhí)行狀態(tài)。這個(gè)執(zhí)行開始狀態(tài)的重新生成可以重新建立執(zhí)行路徑的函數(shù)區(qū)間的 環(huán)境。在步驟43中,進(jìn)行反向執(zhí)行。從最后一個(gè)活躍行進(jìn)點(diǎn)出發(fā),并考慮與活躍的行進(jìn)點(diǎn)關(guān)聯(lián)的控制點(diǎn)捕獲的狀態(tài)作為執(zhí)行狀態(tài),重新執(zhí)行程序。在步驟44中,在有缺陷的函數(shù)中搜索發(fā)生錯(cuò)誤的根本原因,以便回溯有缺陷的串然后改正程序中的錯(cuò)誤。在步驟45中,檢驗(yàn)調(diào)試階段是否結(jié)束。如果調(diào)試階段結(jié)束,那么可以整體執(zhí)行程序(步驟46)。相反地,則要回到步驟34并重新執(zhí)行步驟34至45。當(dāng)程序中沒有錯(cuò)誤時(shí)(步驟38),執(zhí)行步驟40。在步驟40中,確定程序員是否以 交互的方式要求進(jìn)行函數(shù)區(qū)間的跳變。如果已經(jīng)要函數(shù)區(qū)間的跳變,那么就執(zhí)行步驟41和 接下來的步驟。相反地,則重新執(zhí)行步驟34,以繼續(xù)執(zhí)行程序。事實(shí)上,在本發(fā)明中,程序 的設(shè)標(biāo)可以自動(dòng)進(jìn)行,即標(biāo)記自動(dòng)定位于每個(gè)函數(shù)區(qū)間的開始。這個(gè)程序的設(shè)標(biāo)可以是交 互的,即程序員在同一個(gè)函數(shù)內(nèi)部選擇定位(設(shè)置)附加的標(biāo)記。這些附加的標(biāo)記可以是 輸入標(biāo)記,輸出標(biāo)記和/或中間標(biāo)記。由程序員自己選擇交互或自動(dòng)的設(shè)標(biāo)。交互的設(shè)標(biāo) 使得可以細(xì)化搜索和改正錯(cuò)誤的區(qū)間,這就使得可以減小上述的區(qū)間并因而便于檢測出錯(cuò) 誤。從上述可知,本發(fā)明的方法使得可以使用相對于已知方法很小的信息容量來進(jìn)行 調(diào)試,因?yàn)榻柚诳刂泣c(diǎn)和行進(jìn)點(diǎn)捕獲然后重建的數(shù)據(jù)只是與唯一一個(gè)執(zhí)行狀態(tài)相對應(yīng)的 數(shù)據(jù)。事實(shí)上,程序的執(zhí)行狀態(tài)的信息容量很小。另外,這樣一種重新生成的成本既不依賴 于人們努力生成的程序開始時(shí)執(zhí)行狀態(tài)的位置,也不依賴于數(shù)據(jù)存儲(chǔ)器4的大小。圖2a示出一種用于飛行器機(jī)載系統(tǒng)的運(yùn)行軟件的測試環(huán)境的控制單元1的一個(gè) 實(shí)例。根據(jù)一種實(shí)施變體,測試環(huán)境可以在主平臺(tái)上虛擬模擬,也可以建立在仿真器類型的 硬件設(shè)備的基礎(chǔ)上??刂茊卧?包括(并未全部列出)處理器2,程序存儲(chǔ)器3,數(shù)據(jù)存儲(chǔ)器4,和輸入 /輸出接口 5。處理器2、程序存儲(chǔ)器3、數(shù)據(jù)存儲(chǔ)器4和輸入/輸出接口 5通過雙向通信總 線6相互連接。在圖2a上,簡略示出了調(diào)試階段的運(yùn)行軟件的一個(gè)程序7。程序7包括一個(gè)執(zhí)行 路徑8。執(zhí)行路徑8包括一組指令代碼行。執(zhí)行路徑8被按規(guī)則和恰當(dāng)?shù)姆绞角懈畈⑿纬?函數(shù)區(qū)間。因此,在調(diào)試階段,程序7與處理器2、程序存儲(chǔ)器3和數(shù)據(jù)存儲(chǔ)器4恒定連接。程序存儲(chǔ)器3在區(qū)域9中包括使得為程序7設(shè)置信標(biāo)的指令。程序7的信標(biāo)系 統(tǒng)使得在整個(gè)執(zhí)行路徑8上安放行進(jìn)點(diǎn)10。每個(gè)行進(jìn)點(diǎn)10都與一個(gè)函數(shù)區(qū)間相關(guān)連。程 序7的信標(biāo)系統(tǒng)同樣可以關(guān)于相應(yīng)的行進(jìn)點(diǎn)10設(shè)置控制點(diǎn)11,12,13,14和15。程序存 儲(chǔ)器3在區(qū)域21內(nèi)包括執(zhí)行程序7的指令。執(zhí)行程序7使得可以一個(gè)接一個(gè)指令地展開 (c^roulement)執(zhí)行路徑8。程序7的執(zhí)行路徑的展開使得在行進(jìn)點(diǎn)10上的通過有效。行 進(jìn)點(diǎn)的通過有序地激活控制點(diǎn)11,12,13,14和15。程序存儲(chǔ)器13在區(qū)域22內(nèi)包括捕獲程 序7的執(zhí)行開始時(shí)的狀態(tài)的信息??刂泣c(diǎn)11,12,13,14和15的激活使得可以有序地捕獲 程序7的執(zhí)行開始時(shí)的狀態(tài)。程序存儲(chǔ)器3在區(qū)域23內(nèi)包括存儲(chǔ)程序7執(zhí)行開始時(shí)的狀 態(tài)的信息。這些信息被存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器4中。程序存儲(chǔ)器3在區(qū)域24中包括使得可以 重建這些存儲(chǔ)的執(zhí)行狀態(tài)的信息的指令。在圖2b上詳細(xì)地示出了數(shù)據(jù)存儲(chǔ)器4。
權(quán)利要求
一種用于處理機(jī)載系統(tǒng)的運(yùn)行軟件的程序在調(diào)試階段所處理的信息容量的方法,其特征在于包括以下步驟a)通過在程序的每個(gè)函數(shù)上布置行進(jìn)點(diǎn),將所述運(yùn)行程序的執(zhí)行路徑切割(32)成多個(gè)函數(shù)區(qū)間,b)設(shè)置(33)與每個(gè)行進(jìn)點(diǎn)相關(guān)聯(lián)的控制點(diǎn),c)正常執(zhí)行程序,其中進(jìn)行以下操作存儲(chǔ)程序在每個(gè)行進(jìn)點(diǎn)位置處的執(zhí)行狀態(tài),存儲(chǔ)執(zhí)行狀態(tài)使得刪除前面存儲(chǔ)的在所述行進(jìn)點(diǎn)的執(zhí)行狀態(tài),當(dāng)檢測到錯(cuò)誤時(shí)搜索與有缺陷的函數(shù)相對應(yīng)的行進(jìn)點(diǎn),搜索(41)程序開始執(zhí)行狀態(tài),重新生成(42)這個(gè)開始執(zhí)行狀態(tài),改正(44)這個(gè)有缺陷的函數(shù)中的錯(cuò)誤,和重新執(zhí)行程序。
2.根據(jù)權(quán)利要求1的方法,其特征在于唯一的執(zhí)行狀態(tài)同時(shí)存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中。
3.根據(jù)權(quán)利要求1或2的方法,其特征在于在正常執(zhí)行一個(gè)函數(shù)后,與這個(gè)函數(shù)相對應(yīng) 的行進(jìn)點(diǎn)從非活躍狀態(tài)過渡為活躍狀態(tài)。
4.根據(jù)權(quán)利要求3的方法,其特征在于搜索有缺陷的函數(shù)在于搜索最近的活躍行進(jìn)點(diǎn)ο
5.根據(jù)權(quán)利要求3或4的方法,其特征在于存儲(chǔ)行進(jìn)點(diǎn)及其狀態(tài)的列表。
6.一種模擬飛行器的機(jī)載計(jì)算機(jī)的運(yùn)行的設(shè)備,其特征在于實(shí)施根據(jù)權(quán)利要求1至5 中任一項(xiàng)的方法。
7.根據(jù)權(quán)利要求6的設(shè)備,其特征在于包括能夠存儲(chǔ)程序的執(zhí)行狀態(tài)的數(shù)據(jù)存儲(chǔ)器⑷。
8.一種用于飛行器的機(jī)載系統(tǒng)的可加載在控制單元(1)上的運(yùn)行軟件的程序,包括當(dāng) 程序被加載在控制單元(1)上并在控制單元(1)上執(zhí)行時(shí)用于執(zhí)行根據(jù)權(quán)利要求1至5中 任一項(xiàng)的方法的指令序列。
全文摘要
本發(fā)明涉及一種處理機(jī)載系統(tǒng)的運(yùn)行軟件的程序在調(diào)試階段所處理的信息容量的方法,其特征在于包括以下步驟a)通過在程序的每個(gè)函數(shù)上布置行進(jìn)點(diǎn),將所述運(yùn)行程序的執(zhí)行路徑切割(32)成多個(gè)函數(shù)區(qū)間,b)設(shè)置(33)與每個(gè)行進(jìn)點(diǎn)相關(guān)聯(lián)的控制點(diǎn),c)正常執(zhí)行程序,其中進(jìn)行以下操作存儲(chǔ)程序在每個(gè)行進(jìn)點(diǎn)位置處的執(zhí)行狀態(tài),存儲(chǔ)執(zhí)行狀態(tài)使得刪除前面存儲(chǔ)的所述行進(jìn)點(diǎn)的執(zhí)行狀態(tài),當(dāng)檢測到錯(cuò)誤時(shí)搜索與有缺陷的函數(shù)相對應(yīng)的行進(jìn)點(diǎn),搜索(41)程序開始時(shí)執(zhí)行狀態(tài),重新生成(42)這個(gè)開始執(zhí)行狀態(tài),改正(44)這個(gè)有缺陷的函數(shù)中的錯(cuò)誤,和重新執(zhí)行程序。
文檔編號(hào)G06F11/36GK101802793SQ200880106873
公開日2010年8月11日 申請日期2008年9月12日 優(yōu)先權(quán)日2007年9月14日
發(fā)明者F·蘭蒂姆比沃羅羅納 申請人:空中客車運(yùn)營簡易股份公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
鹤岗市| 陆川县| 黎平县| 靖宇县| 特克斯县| 宁晋县| 咸阳市| 渝北区| 绥芬河市| 兴海县| 巴南区| 沾益县| 高唐县| 铜山县| 南郑县| 西丰县| 湄潭县| 渭南市| 东台市| 安顺市| 西昌市| 民和| 望江县| 青神县| 昭通市| 台南县| 阳曲县| 南靖县| 平远县| 中江县| 合川市| 通江县| 南充市| 桐梓县| 班玛县| 利川市| 邹平县| 海伦市| 交口县| 台东县| 曲水县|