專利名稱:系統(tǒng)運行正確性的檢測方法
技術領域:
本發(fā)明涉及電腦系統(tǒng)檢測技術,特別是涉及一種系統(tǒng)運行正確性的檢測方法。
系統(tǒng)程序以及在其操作環(huán)境下操作的應用程序若運行失敗,除了邏輯性錯誤之外,主要原因在于構成系統(tǒng)程序或應用程序運行所需的資源移失、損壞、或是被錯誤覆蓋。隨著Windows等大型操作系統(tǒng)的普遍使用,應用程序運行所需的資源也趨于龐大復雜,一旦發(fā)生資源移失、損壞、或是被錯誤覆蓋,用戶將無從知曉運行失敗的原因。
現(xiàn)有較常采用的方式,是當系統(tǒng)程序或應用程序發(fā)生運行失敗時,僅僅是將所有文件重新復制。如此一來,就可能會產生用戶重要數(shù)據(jù)移失的問題。
另一現(xiàn)有技術則是通過對該應用程序建立模板庫(template)的方式。然而,此模板庫充其量只是應用程序相關動態(tài)鏈接庫文件暨可執(zhí)行文件等數(shù)據(jù)匯集而成,故僅能簡單地分析系統(tǒng)錯誤,修復時也僅是采取重新安裝系統(tǒng)程序的方式,這樣,將導致原有應用程序相關數(shù)據(jù)的移失。再者,以目前技術所創(chuàng)建的模板庫中,只是數(shù)據(jù)的簡單堆積,各數(shù)據(jù)之間并沒有建立時間上或空間上的邏輯關系,因此,對于某些特殊文件中的資源,則無法做出比較,也就是無法自動追加文件分析的類型。另外,現(xiàn)有模板庫不能具體分析發(fā)生錯誤的文件,判斷過程中準確性低,無法針對個別文件進行錯誤修正。此外,由于模板庫的建立是與當前系統(tǒng)程序的動態(tài)鏈接庫密切相關,因此無法支援跨平臺檢測。
本發(fā)明的一目的在于提供一種系統(tǒng)運行正確性的檢測方法,利用可運行集合檢測系統(tǒng)及應用程序檢測能否正確運行。
本發(fā)明的另一目的在于提供一種系統(tǒng)運行正確性的檢測方法,由一集合解譯標準介面,可跨平臺支援系統(tǒng)及應用程序的錯誤判斷。
本發(fā)明的目的是這樣實現(xiàn)的,即提供一種系統(tǒng)運行正確性的檢測方法來完成。首先,讀取某一待測程序的原始數(shù)據(jù),并根據(jù)此原始數(shù)據(jù)建立一可運行集合。接著,根據(jù)可運行集合分析待測程序的運行正確性,若知運誤,則產生一錯誤報告。至于建立可運行集合的步驟,是先對待測程序的文件系統(tǒng)進行掃描,并根據(jù)以建立一數(shù)據(jù)庫,此數(shù)據(jù)庫包括待測程序直接調用的動態(tài)鏈接庫、間接調用的動態(tài)鏈接庫、以及冗余調用文件等的信息。然后,根據(jù)文件信息選取待測程序可行及所需的文件。最后,根據(jù)經選取文件產生一對應結構表,而由對應結構表組成可運行集合。
本發(fā)明方法的優(yōu)點在于,其能具體分析出產生錯誤的文件,并可針對發(fā)生錯誤的文件加以修正,故準確高,且具有即時性。
下面結合附圖,詳細說明本發(fā)明的實施例,其中
圖1為根據(jù)本發(fā)明建立可運行集合一實施例的流程圖;圖2為根據(jù)本發(fā)明某一應用程序所對應的數(shù)據(jù)庫結構的示意圖;圖3為可運行集合內與應用程序正確運行相關的某一資源的結構表示意圖;圖4為根據(jù)本發(fā)明的分析功能方塊圖;以及圖5為根據(jù)本發(fā)明檢測方法一優(yōu)選實施例的流程圖。
由于應用程序運行失敗最基本的原因在于資源的缺損,因此,若能即時地分析出造成程序運行失敗的原因,并且能夠立即予以彌補,便可以在無需技術人員的情況下,根據(jù)本發(fā)明檢測方法分析并恢復系統(tǒng)及應用程序,而使系統(tǒng)恢復正常運行的能力。
首先,根據(jù)系統(tǒng)程序的原理建立相關的數(shù)學模型(詳見后述的可行性分析模型)。在系統(tǒng)程序的操作環(huán)境中,應用程序若能正常運行,其最基本的前提是該應用程序直接調用的各種資源暨系統(tǒng)程序所提供的基本資源的狀態(tài)均屬正常。因此,根據(jù)本發(fā)明方法,提出可運行集合(runnable set)做為判斷依據(jù)。所謂可運行集合是指某一應用程序在其所屬系統(tǒng)程序上執(zhí)行時所需資源的總和;若以系統(tǒng)的觀點而言,可運行集合的概念即為系統(tǒng)程序正常運行所需資源的總和。
在不同系統(tǒng)程序環(huán)境下,可執(zhí)行時的狀態(tài)參數(shù)并不盡相同,為方便說明起見,下文以Windows 95系統(tǒng)程序的操作環(huán)境為例,說明建立一應用程序的可運行集合的過程。
請參照圖1,所示為根據(jù)本發(fā)明建立可運行集合的流程圖示。圖1中,首先是從步驟10開始對待測應用程序所屬文件系統(tǒng)進行掃描,獲取包括應用程序名稱、大小、PE文件格式版本等文件特征,并且包括該應用程序運行時直接調用的動態(tài)鏈接庫(DLLDynamic Linking Library)文件、間接調用的動態(tài)鏈接庫文件、以及與待測應用程序直接相關的冗余調用文件(諸如延伸6文件名為.hlp、.txt、…、.dat、.dbf等的文件)的詳細信息,而于步驟11,建立此待測應用程序的相關數(shù)據(jù)庫,此數(shù)據(jù)庫的結構即如圖2所示,圖2所示即為根據(jù)本發(fā)明某一應用程序所對應的數(shù)據(jù)庫結構的示意圖。圖示中,應用程序的數(shù)據(jù)庫結構包括特征描述項20、直接調用項21、間接調用項22、以及冗余調用項23等四個。其中,特征描述項20記錄著關于該應用程序的名稱、大小、PE文件格式版本等的描述;直接調用項21記錄著與系統(tǒng)程序相關、直接調用的動態(tài)鏈接庫(.dll),是屬于靜態(tài)調用文件的詳細信息;間接調用項22記錄著與系統(tǒng)程序相關、間接調用的動態(tài)鏈接庫(.dll),是屬于動態(tài)調用文件的詳細信息;而冗余調用項23則記錄著與系統(tǒng)無關、而與該應用程序直接相關的冗余調用文件,諸如延伸文件名為.hlp、.txt、…、.dat、.dbf等文件。
接著,再請參照圖1,進行步驟12從數(shù)據(jù)庫獲取一組文件信息后,于步驟13根據(jù)文件信息判斷是否相對應文件屬于待測應用程序可執(zhí)行及所需者。若于步驟13知道屬于待測應用程序可運行集合所需的文件,則進行步驟14根據(jù)此一文件信息對所對應的文件,自文件系統(tǒng)中進行提取。然后,于步驟15對所提取文件進行文件格式的分析,獲取如同圖3所示的結構表。
請參照圖3,所示為與應用程序正確運行某一相關文件(或稱資源)的結構表示意圖,圖3中,每一結構表包括文件名稱(file name)30、文件大小(filesize)31、校驗和(checksum)32、循環(huán)冗余檢測碼(cyclic redundancy checkcode)33、PE文件格式版本(PE file version)34等項,每一項均為某一相關文件(資源)的特征描述。
再請參照圖1,接著進行步驟16判斷對文件系統(tǒng)的掃描是否完畢,若否,則進行步驟17指向下一筆文件信息后,回復至步驟12。再者,在步驟13判斷若知非屬待測應用程序可行及所需的數(shù)據(jù)結構,也進行步驟16做掃描完畢與否的判斷。當于步驟16判斷知道掃描已完畢,則將所獲得的若干結構表建構得一可運行集合(步驟18)。換言之,可運行集合是由與應用程序運行相關文件(或稱相關資源)所對應的結構表所組成。當然,尚有其他建立可運行集合的方式,圖1僅為此中的一例。
再者,請參照圖4,所示為根據(jù)本發(fā)明的分析功能方塊圖。根據(jù)本發(fā)明,
再者,請參照圖4,所示為根據(jù)本發(fā)明的分析功能方塊圖。根據(jù)本發(fā)明,由不同平臺操作環(huán)境下所建立的可運行集合,可分別通過各自的系統(tǒng)集合解譯器處理,譬如,圖4所示,各種系統(tǒng)程序如Windows95、Unix、Linux、Mac0S等由各自的解譯器40、41、42、43,并通過插接(plug-in)方式與一集合解譯公用介面44連接后,由分析模組件45做檢測。換言之,本發(fā)明的檢測方法可以檢測多種系統(tǒng)程序及其環(huán)境中運行的應用程序是否正確。由于分析方法是以集合形式為之,而集合解譯則與系統(tǒng)程序無關。
請參照圖5,所示為根據(jù)本發(fā)明的檢測方法一優(yōu)選實施例的流程圖。首先,于步驟50讀取系統(tǒng)或應用程序的原始數(shù)據(jù),此原始數(shù)據(jù)是應用程序運行所建立的模板庫。再于步驟51根據(jù)是項原始數(shù)據(jù)建立當前可運行集合(詳如圖1所示)。接著,進行步驟52分析當前系統(tǒng)或應用程序的正確性,此分析方法利用可行性分析模型(詳如下述)進行判斷。再于步驟53判斷系統(tǒng)或應用程序的運行是否正確。若屬正確,則進行步驟54判斷是否進行下一次分析,若是,則回復至步驟50;若否,則完成此一流程。
若在步驟53知道系統(tǒng)或應用程序運行出錯,則進行步驟55產生分析錯誤報告,并可于步驟56針對錯誤文件進行修正(詳如下述)。然后,于步驟54判斷是否進行下一次分析。
由于本發(fā)明的檢測方法,是利用集合形式進行分析。因此,當用戶需要測試系統(tǒng)程序的可行性時,先決條件為當前的系統(tǒng)程序(Sc)需包括于待檢測系統(tǒng)程序的標準格式(Sstd),并以集合條件ScSos檢測當前系統(tǒng)是否正常。
當用戶欲對應用程序的可行性進行測試時,便需區(qū)分為與系統(tǒng)程序相關測試及與應用程序相關測試兩類。就與系統(tǒng)相關測試而言,檢驗當前應用程序(Aε)與當前系統(tǒng)程序(Sc)的交集是否包含于標準系統(tǒng)程序(Sstd)。假若(Aε∩Sc)Sstd,表示當前應用程序(Aε,即應用程序間接可運行集合)所調用的動態(tài)鏈接庫與當前系統(tǒng)程序(Sc)相關的動態(tài)鏈接庫正常;反之,則表示系統(tǒng)程序出錯。就與應用程序相關測試言,當運行一段時間的應用程序,其相關記錄集合(Ac,即當前可運行集合)可能會發(fā)生變化,需與應用程序在系統(tǒng)程序中的原始記錄集合(Aoriginal)相互比較。若前者包括于后者,則表示運行后或運行中的應用程序未發(fā)生超出正常范圍的變化,即可認定該應用程序正常;否則,則視為該應用程序出錯。
經過上述可行性分析后,檢測出系統(tǒng)程序或應用程序錯誤之后,將發(fā)生錯誤的記錄歸納為錯誤分析報告,并可從原始數(shù)據(jù)中自動找出正確的記錄,根據(jù)以替換掉錯誤的記錄。這樣,可針對發(fā)生錯誤的個別文件進行修正。然而,若欲實現(xiàn)個別性的錯誤修復,前提當需先為應用程序進行備份,并將必要的資料信息存入數(shù)據(jù)庫中。當用戶選擇修復時,即可從預先備份者進行相關調用,將欲修復的資源提取出來,進行修復。
為了具體說明本發(fā)明的檢測方法,以Winzip為例做一說明首先,掃描Winzip文件系統(tǒng)的相關信息,其中,包括應用程序名稱、大小、PE文件格式版本等特征描述,以及該應用程序運行時直接調用的動態(tài)鏈接庫、間接調用的動態(tài)鏈接庫、以及冗余調用文件等的詳細信息,建立Winzip的相關數(shù)據(jù)庫。
從該數(shù)據(jù)庫中獲取文件信息,對與Winzip相關的可運行集合所需的文件進行分析,獲取相對應的結構表,根據(jù)以構成可運行集合,即如下表所示。
然后,讀取該應用程序預先備份好的原始數(shù)據(jù),與可運行集合進行比較,分析當前系統(tǒng)程序或該應用程序運行的正確性,若有不正確的狀態(tài)記錄,則產生純文字文件的錯誤報告,即如下示。
WinZip 6.0WINZIPFM.DLL=Different version→MalfunctionWZ.COM=Different file size→MalfunctionWZ32.DLL=Different version→Fail RunningWINZIP.HLP=Different CRC code→NO HELP Function關于修正錯誤的方法,譬如上例錯誤報告中WINZIP.HLP不能正常開啟,是因為CRC CODE錯誤,故可將預先備份妥當?shù)奈募_部分寫入當前文件內,恢復該文件的正常運行。
雖然以上結合優(yōu)選實施例揭露了本發(fā)明,然而其并非用以限定本發(fā)明,任何熟悉本技術的人員,在不脫離本發(fā)明的精神和范圍內,可作更動與潤飾,因此本發(fā)明的保護范圍應當視為附上的權利要求所界定的為準。
權利要求
1.一種系統(tǒng)運行正確性的檢測方法,其特征在于,包括下列步驟(a)讀取一程序的原始數(shù)據(jù);(b)根據(jù)該原始數(shù)據(jù)建立一可運行集合;(c)根據(jù)該可運行集合分析該程序的運行正確性;以及(d)若于步驟(c)知運行有錯誤,則產生一錯誤報告。
2.如權利要求1所述的系統(tǒng)運行正確性的檢測方法,其特征在于,步驟(b)包括掃描該程序的文件系統(tǒng),并以此建立一數(shù)據(jù)庫,該數(shù)據(jù)庫包括該程序直接調用的動態(tài)鏈接庫、間接調用的動態(tài)鏈接庫、以及冗余調用文件等的信息;根據(jù)該各文件信息,選取該程序可行及所需的文件;根據(jù)每一該經選取文件產生一對應結構表,而由該各對應結構表組成該可運行集合。
3.如權利要求2所述的系統(tǒng)運行正確性的檢測方法,其特征在于,每一該對應結構表包括文件名稱、文件大小、核對和、循環(huán)冗余檢測碼、PE文件格式版本等項。
4.如權利要求2所述的系統(tǒng)運行正確性的檢測方法,其特征在于,選取該程序可行及所需的文件的步驟是自該文件系統(tǒng)中進行提取。
5.如權利要求1所述的系統(tǒng)運行正確性的檢測方法,其特征在于,該程序是系統(tǒng)程序。
6.如權利要求5所述的系統(tǒng)運行正確性的檢測方法,其特征在于,步驟(b)是判斷當前的該系統(tǒng)程序需包括于待檢測系統(tǒng)程序的標準格式。
7.如權利要求1所述的系統(tǒng)運行正確性的檢測方法,其特征在于,該程序是應用程序,該應用程序是于一系統(tǒng)程序的操作環(huán)境下操作。
8.如權利要求7所述的系統(tǒng)運行正確性的檢測方法,其特征在于,步驟(b)包括檢驗當前該應用程序與當前系統(tǒng)程序的交集是否包括于標準系統(tǒng)程序;以及運行后的該應用程序相關記錄集合是否可包括于該應用程序在該系統(tǒng)程序中的原始記錄集合。
9.如權利要求1所述的系統(tǒng)運行正確性的檢測方法,其特征在于,尚包括步驟(e)根據(jù)該錯誤報告逐一修正。
全文摘要
一種系統(tǒng)運行正確性的檢測方法,首先,讀取某一待測程序的原始數(shù)據(jù),并以此建立一可運行集合,接著,據(jù)可運行集合分析待測程序的運行正確性,若知運行有誤,則產生錯誤報告。建立可運行集合的步驟,是先對待測程序的文件系統(tǒng)進行掃描,并以此建立一數(shù)據(jù)庫,其包括動態(tài)鏈接庫、動態(tài)鍵接庫及冗余調用文件等信息。然后,據(jù)文件信息選取待測程序可行及所需的文件。最后,經選取檔案而對應的結構表組成可運行集合。
文檔編號G06F11/00GK1266226SQ9910248
公開日2000年9月13日 申請日期1999年3月4日 優(yōu)先權日1999年3月4日
發(fā)明者林光信, 陳玄同, 李鵬 申請人:英業(yè)達股份有限公司