專利名稱::一種基于序列模式挖掘的程序級操作系統(tǒng)調(diào)試方法
技術領域:
:本發(fā)明涉及基于序列模式挖掘的程序級操作系統(tǒng)調(diào)試方法,屬于桌面操作系統(tǒng)調(diào)試領域。
背景技術:
:目前很多桌面操作系統(tǒng)由于資金,人力上的不足,在后期完善階段遇到各種各樣的bug(系統(tǒng)缺陷)。有時bug數(shù)量過于龐大,開發(fā)人員抓不住重點,往往找不到真正的bug,系統(tǒng)沒有得到真正的改善。這時一般開發(fā)人員會使用傳統(tǒng)的調(diào)試工具來找bug,例如GDB(通用公共授權調(diào)試器)等工具。GDB是GNU(通用公共授權)開源組織發(fā)布的一個UNIX下的程序調(diào)試工具,它在調(diào)試方面主要有以下幾方面作用①啟動程序,可以按照用戶的自定義的要求隨心所欲的運行程序。②可讓被調(diào)試的程序在用戶所指定的調(diào)置的斷點處停住(斷點可以是條件表達式)。③當程序被停住時,可以檢查此時用戶的程序中所發(fā)生的事。但是桌面操作系統(tǒng)一般來說都比較龐大,GDB對整個系統(tǒng)調(diào)試是一件不現(xiàn)實的事情,它只對于局部調(diào)試有相當明顯的作用,而無法對整個桌面操作系統(tǒng)bug位置的快速定位。
發(fā)明內(nèi)容本發(fā)明的目的在于提出一種基于序列模式挖掘的程序級操作系統(tǒng)調(diào)試方法,以實現(xiàn)在對整個桌面操作系統(tǒng)bug位置的快速定位。本發(fā)明的基于序列模式挖掘的程序級操作系統(tǒng)調(diào)試方法,依次包括如下步驟1)數(shù)據(jù)預處理通過在操作系統(tǒng)中插入跟蹤代碼,將其中的系統(tǒng)調(diào)用記錄到文件中,對每個系統(tǒng)調(diào)用進行編號,然后通過二分切割法對序列進行匹配切割成短序列;2)設置序列模式挖掘的基本參數(shù)系統(tǒng)調(diào)用序列集S,種子序列集P,最終序列集R,序列的個數(shù)N,序列模式的最小支持數(shù)min—s邵;3)頻繁序列的模式挖掘第一步掃描系統(tǒng)調(diào)用序列集,生成所有長度為1的序列模式,判斷其是否為種子序列;第二步再次掃描系統(tǒng)調(diào)用序列集,由長度為1的序列模式構造下三角矩陣,得到所有長度為2的序列模式;第三步分析第二步中得到的矩陣,利用前后綴的基本特性來檢驗候選序列,對每個長度為k+l和k+2的候選序列,根據(jù)下三角矩陣,定義兩種類型的值,一種是對角線上的值M[f,f],另一種是非對角線上的值M[a,b],f,a,b代表長度為1的序列模式中的三個序列模式;a)如果K+1候選序列模式無任何值大于等于最小支持數(shù),將候選序列模式放入最終序列集Rk+nb)利用最終序列集Rk判斷候選序列模式是否包含Rk中的元素,若是,將候選序列模式加入Rk+2中;c)將下三角矩陣中值大于最小支持數(shù)的K+2候選序列模式放入種子序列Pk+2中;第四步利用第三步得到下三角矩陣中的種子序列集構造投影序列集,對每個投影序列集重復以上操作,直到?jīng)]有新的頻繁序列模式產(chǎn)生為止;4)對頻繁序列模式樣本標記第一步刪除不在長度為1的種子序列集中的函數(shù);第二步采取最長精確匹配算法對序列集S中的每個序列進行模式匹配,算法過程如下a)首先對找到的所有頻繁序列模式排序;b)從前往后對序列集S中的每個序列和頻繁序列模式集中的模式進行匹配,直到序列集S中的每個序列的前綴匹配到頻繁序列集中的最長序列為止;c)將經(jīng)匹配的序列集S中的每個序列的前綴轉化為頻繁序列模式的序號,繼續(xù)匹配序列集S中的每個序列的后綴,直到序列集S中每個序列匹配結束;第三步刪除序列集S中未標記的函數(shù)或函數(shù)序列;5)隱馬爾可夫模型的參數(shù)讀入上一步中得到的最終標記序列集,通過以下公式計算隱馬爾可夫模型的初始狀態(tài)概率7Ti、狀態(tài)轉移概率ay和輸出概率b《Ok),C(X^Si),,八t公式中,Xi代表每個序列中第一次出現(xiàn)的頻繁模式,Si表示頻繁序列模式集中的第i個頻繁序列模式,C(X產(chǎn)Si)表示最終標記序列集中以Si為初始狀態(tài)的序列個數(shù),k=l公式中,Cy表示最終標記序列集中從頻繁序列模式Si轉移到頻繁序列模式Sj的次數(shù),bi(Ok)="5;^^,1《UN,l《j《M公式中,Q,k表示在最終標記序列集中頻繁序列模式Si中出現(xiàn)序列Ok的次數(shù),O表示系統(tǒng)調(diào)用序列中各個函數(shù)集合;6)識別異常的系統(tǒng)調(diào)用序列中的頻繁序列模式假設異常系統(tǒng)調(diào)用序列長度為T,識別過程如下第一步初始化先求出初始頻繁序列模式的概率S《i),3《i)-TObi(O0,i-lN同時令W《i"0,W是一個二維矩陣,記錄各個St(i),l《t《T的得勝節(jié)點,第二步遞推求t長度時頻繁序列模式的最大概率5t(j),S《j)O'_'(輔bj(ot),t=2~T,j=1~N對t長度時的每個頻繁序列模式,記錄該St(j)的得勝節(jié)點,Wt(j)=,=1—,[S"(i)aij]^2Tj^N第三步終止求出最優(yōu)總概率P:=1=1,[ST(i)]求出最終選定q:=,[ST(i)]第四步最優(yōu)頻繁序列模式回溯由q:+1反查W記錄,得到q:,t=T-l,T-2,...,l;7)模糊處理q:對q:進行模糊匹配處理,步驟如下第一步對q:從前往后搜索,找出連續(xù)兩個及以上相同的頻繁序列模式FP,同時將頻繁序列模式FP對應的位置作為匹配的初步起點;第二步使用基于編輯距離的字符串匹配方法對q:與頻繁序列模式匹配,步驟如下a)從頻繁序列模式集中取得頻繁序列模式FP的序列及其長度;b)將第一步中的初步起點加上FP的長度作為初步終點,將初歩起點和初步終點分別向前和向后加上m長度,得到序列TS,m-2或3,采用KMP算法對序列TS與頻繁序列模式FP匹配;c)按下式計算TS與FP的匹配率MPMP=>min—matchingn2—nl代表匹配上的序列個數(shù),n2代表頻繁序列模式的長度,min—matching為最小匹配率,如果MP大于mii^matching,則說明TS匹配上FP,將TS識別為FP;第三步將TS識別后的終點作為下一次匹配的起點,重復前兩步,直到完成序列q:的全部識別,得到最終序列FS,調(diào)試完畢。采用本發(fā)明方法調(diào)試桌面操作系統(tǒng),可以準確識別正常序列和異常(出錯)序列,通過對異常序列進行分析,能夠準確、快速的定位整個桌面操作系統(tǒng)bug所在位置,有利于用戶不斷完善操作系統(tǒng)。具體實施例方式以下結合實例進一步說明本發(fā)明。以源碼桌面操作系統(tǒng)wine調(diào)試為例,Wine是在Linux下模擬Windows環(huán)境的一個系統(tǒng),可以在Linux下運行Windows應用程序?;谛蛄心J酵诰虻某绦蚣壊僮飨到y(tǒng)調(diào)試方法,依次包括如下步驟1)數(shù)據(jù)預處理在wine中插入跟蹤代碼,跟蹤代碼采用C語言描述,如下所示FILE*爾;爾=fopen((file),"a+"));&rintf(*,"%s",__FUNCTION_);fcl0se(Q5);將wine中的系統(tǒng)調(diào)用記錄到文件中。對每個系統(tǒng)調(diào)用采用自然數(shù)進行編號,然后通過二分切割法對序列進行匹配切割成短序列。例如其系統(tǒng)調(diào)用序列有(openfilereadfilewritefileclosefile…),通過對其編號可以簡寫為(12,15,18,19,…),一般一條跟蹤序列長度為5000到20000,通過二分匹配切割序列長度降為20-40長度。2)設置序列模式挖掘的基本參數(shù)系統(tǒng)調(diào)用序列集S,包括在wine上正常運行的100個軟件的系統(tǒng)調(diào)用序列集。種子序列集P,初始化為空,Pk是用來跟蹤記錄所用長度為k的滿足最小支持度的序列。最終序列集R,初始化為空,Rk是用來跟蹤記錄所有長度為k,后綴為空的序列。序列的個數(shù)N,這里有29130個,序列模式的最小支持數(shù)min—sup=200。3)頻繁序列的模式挖掘設系統(tǒng)調(diào)用序列集S如表1所示,并設用戶指定的最小支持度minimumsupport=2,初始化RKPK表i原始序列集<table>tableseeoriginaldocumentpage9</column></row><table>第一步掃描原始序列集S,產(chǎn)生長度為l的序列模式為((a:3),(b:3),(C:4),(d:1),(e:1),(f:4),(g:1),(h:1),(i:1),(j:1),(k:1),(1-2),(m:3),(n:1),(O:2),(p:3)},于是種子序列集記為{(f:4),(C:4),(b:3),(m:3),(p:3),(1:2),(O:2)}。第二步再次掃描序列集,構造下三角矩陣,如表2所示表2下三角矩陣f<table>tableseeoriginaldocumentpage9</column></row><table>表中的值類型分為兩種,對角線上的值如M[f,f]=0,表示序列《》出現(xiàn)次數(shù)為0,其他點的值如M[a,fH2,l)表示〈a,>出現(xiàn)2次,<f,0>出現(xiàn)1次。第三步分析第二步中得到的矩陣,利用前后綴的基本特性來檢驗候選序列a)求出所有l(wèi)-序列模式中沒有大于等于最小支持度的模式,SP{,<o>,<m>},將其放入最終序列集RlH〈p、<o>,<m>}。b)掃描每個頻繁2-序列模式,看每個頻繁2-模式是否包含最終序列集的元素,如果包含最終序列集元素,則與原序列連接放入最終序列集中,這里我們得到序列集{《,o>,<f,p>,<c,p>,<a,p>,<b,o>},將其放入最終序列集,得到最終序列集為R2={,<o>,<m>,<f,o>,<f,p>,<f,m>,<c,m>,<a,m>,<c,p>,<a,p>,<b,o>,<1,m>}。c)對于不包含最終序列集的頻繁2-序列將其放入種子序列集,得到P2={<f,c>,<f,m>,<f,1>,<c,1>,<c,m>,<a,1>,<a,f>,<a,c>,...}。第四步對于種子序列P2構造投影序列集。如表3所示表32-模式及其相應的投影序列集序列前綴投影序列集<table>tableseeoriginaldocumentpage10</column></row><table>重復步驟3)中的四個步驟,直到?jīng)]有新的序列模式產(chǎn)生為止。最后我們得到一個較大的結果集如下{,<o>,<m>,<f,o>,<f,p>,<f,m>,<c,m>,<a,m>,<c,p>,<a,p>,<b,o>,<1,m>,<b,c>,<b,f,o>,<a,1,m>,<a,f,1,m>,<a,f,m>,<a,c,1,m>,<a,c,p>,<a,c,m>,<c,1,m>,<f,c,p>,<f,c,m>,<f,1,m>}。再經(jīng)過"留長棄短"的工作,即可得到最終的最大序列模式結果,為{<b,o>,<f,p>,<f,m>,<a,m>,<a,p>,<b,f,o>,<a,c,p>,<b,f,o>,<a,c,p>,<f,c,p>,<f,c,m>,<a,f,1,m>,<a,c,1,m>}。從上面這個例子我們可以清楚的了解整個序列模式挖掘過程,通過上述過程最終我們得到了16897個頻繁序列模式。4)對頻繁序列模式樣本標記上一步中我們得到的是桌面操作系統(tǒng)正常工作時的調(diào)用序列集,對調(diào)用序列集進行模式挖掘后找到了所有的頻繁序列模式,需要對調(diào)用序列集進行模式標記。第一步刪除不在長度為1的種子序列集中的函數(shù),即去除噪音。第二步第二步采取最長精確匹配算法對序列集S中的每個序列進行模式匹配,算法過程如下a)首先對找到的所有頻繁序列模式排序;b)從前往后對序列集S中的每個序列和頻繁序列模式集中的模式進行匹配,直到序列集S中的每個序列的前綴匹配到頻繁序列集中的最長序列為止;c)將經(jīng)匹配的序列集S中的每個序列的前綴轉化為頻繁序列模式的序號,繼續(xù)匹配序列集S中的每個序列的后綴,直到序列集S中每個序列匹配結束;第三步刪除序列集S中未標記的函數(shù)或函數(shù)序列;通過這一步對于wine的系統(tǒng)調(diào)用序列集都做了模式標記,如表4所示表4標記后的序列模式集序列號序列1(13,18,19,199,200,100,876,102,34,298)P3...2(367,134,234,987,545,4,709,245)P6…3(45,324,254,56,72,657,43,54,657)P12…4(843,43,54,67,345,25,778,78,234,657,435)P9....5)隱馬爾可夫模型的參數(shù)讀入上一步中得到的最終標記序列集,通過以下公式計算隱馬爾可夫模型的初始狀態(tài)概率7Ti、狀態(tài)轉移概率ay和輸出概率bi(Ok),l;c(x,-s,)i=l公式中,Xi代表每個序列中第一次出現(xiàn)的頻繁模式,Si表示頻繁序列模式集中的第i個頻繁序列模式,C(X產(chǎn)Si)表示最終標記序列集中以Si為初始狀態(tài)的序列個數(shù)。k=l公式中,Cy表示最終標記序列集中從頻繁序列模式Si轉移到頻繁序列模式Sj的次數(shù)。bi(Ok)=1^^,1"N,l2jSMk=l公式中,Ci,k表示在最終標記序列集中頻繁序列模式Sj中出現(xiàn)序列Ok的次數(shù),O表示系統(tǒng)調(diào)用序列中各個函數(shù)集合;通過上面公式可以訓練好隱馬爾可夫模型的參數(shù),m代表16897個模式的初始狀態(tài)概率,aij表示了每個模式間的轉移概率,bi(Ok)表示每個模式中出現(xiàn)每個li系統(tǒng)調(diào)用的概率。6)識別異常(出錯)的系統(tǒng)調(diào)用序列中的頻繁序列模式假設異常系統(tǒng)調(diào)用序列長度為T,識別過程如下第一步初始化求出初始頻繁序列模式的概率,S'(i)-TObi(0,),i^N,同時令W《i)-0,W是一個二維矩陣,記錄各個St(i),l《t《T的得勝節(jié)點,第二步遞推求t長度時頻繁序列模式的最大概率,5t(j)={,==[5—《i)aij])bj(o0,t-2T,j4N對t長度時的每個頻繁序列模式,記錄該&(j)的得勝節(jié)點,Wt(j)=i,-,(i)aij],t-2Tj小N第三步終止求出最優(yōu)總概率p:=1=r:[sT(i)]求出最終選定q:=:n;[ST(i)]第四步最優(yōu)頻繁序列模式回溯由q:+1反查W記錄,得到q:爐T-l,T-2,...,1通過這一步我們可以解析任意一個異常系統(tǒng)調(diào)用序列中的頻繁序列模式。例如給定一個異常系統(tǒng)調(diào)用序列(18,190,324,47,89,567,345,997,345,346,734,887,983...),通過上述步驟我們將其識別為(P34,P34,P34,P158,P34,P34,P912,P912,P912,P912,P899,P65,P912…),這樣我們可以得到大概的序列模式。7)模糊處理q:由于前一步得到的q:中存在很多頻繁序列模式噪音,需要對q:進行模糊匹配處理,步驟如下第一步對q:從前往后搜索,找出連續(xù)兩個及以上相同的頻繁序列模式FP,同時將頻繁序列模式FP對應的位置作為匹配的初步起點;第二步使用基于編輯距離的字符串匹配方法對q:與頻繁序列模式匹配,步驟如下a)從頻繁序列模式集中取得頻繁序列模式FP的序列及其長度;b)將第一步中的初步起點加上FP的長度作為初步終點,將初步起點和初步終點分別向前和向后加上m長度,得到序列TS,m=2,采用KMP算法對序列TS與頻繁序列模式FP匹配;c)按下式計算TS與FP的匹配率MP<formula>formulaseeoriginaldocumentpage12</formula>nl代表匹配上的序列個數(shù),n2代表頻繁序列模式的長度,min一matching為最小匹配率,如果MP大于mir^matching,則說明TS匹配上FP,將TS識別為FP;第三步將TS識別后的終點作為下一次匹配的起點,重復前兩步,直到完成序列q:的全部識別,得到最終序列FS,調(diào)試完畢。以步驟6)中得到的初步結果為例,我們對其進行模糊匹配后得到的最終序列FS為(P34,P34,P34,P34,P34,P34,P912,P912,P912,P912,P912,P912…)。由步驟7)中得到最終序列,我們從中可以看到正常頻繁序列模式已經(jīng)被識別出來,其余那些未識別的序列就是出現(xiàn)錯誤的系統(tǒng)調(diào)用,可見,采用本發(fā)明方法調(diào)試桌面操作系統(tǒng),可以準確識別正常序列和異常(出錯)序列,通過對異常序列進行分析,能夠準確、快速的定位整個桌面操作系統(tǒng)bug所在位置,有利于用戶不斷完善操作系統(tǒng)。權利要求1.一種基于序列模式挖掘的程序級操作系統(tǒng)調(diào)試方法,其特征在于它依次包括如下步驟1)數(shù)據(jù)預處理通過在操作系統(tǒng)中插入跟蹤代碼,將其中的系統(tǒng)調(diào)用記錄到文件中,對每個系統(tǒng)調(diào)用進行編號,然后通過二分切割法對序列進行匹配切割成短序列;2)設置序列模式挖掘的基本參數(shù)系統(tǒng)調(diào)用序列集S,種子序列集P,最終序列集R,序列的個數(shù)N,序列模式的最小支持數(shù)min_sup;3)頻繁序列的模式挖掘第一步掃描系統(tǒng)調(diào)用序列集,生成所有長度為1的序列模式,判斷其是否為種子序列;第二步再次掃描系統(tǒng)調(diào)用序列集,由長度為1的序列模式構造下三角矩陣,得到所有長度為2的序列模式;第三步分析第二步中得到的矩陣,利用前后綴的基本特性來檢驗候選序列,對每個長度為k+1和k+2的候選序列,根據(jù)下三角矩陣,定義兩種類型的值,一種是對角線上的值M[f,f],另一種是非對角線上的值M[a,b],f,a,b代表長度為1的序列模式中的三個序列模式;a)如果K+1候選序列模式無任何值大于等于最小支持數(shù),將候選序列模式放入最終序列集Rk+1;b)利用最終序列集Rk判斷候選序列模式是否包含Rk中的元素,若是,將候選序列模式加入Rk+2中;c)將下三角矩陣中值大于最小支持數(shù)的K+2候選序列模式放入種子序列Pk+2中;第四步利用第三步得到下三角矩陣中的種子序列集構造投影序列集,對每個投影序列集重復以上操作,直到?jīng)]有新的頻繁序列模式產(chǎn)生為止;4)對頻繁序列模式樣本標記第一步刪除不在長度為1的種子序列集中的函數(shù);第二步采取最長精確匹配算法對序列集S中的每個序列進行模式匹配,算法過程如下a)首先對找到的所有頻繁序列模式排序;b)從前往后對序列集S中的每個序列和頻繁序列模式集中的模式進行匹配,直到序列集S中的每個序列的前綴匹配到頻繁序列集中的最長序列為止;c)將經(jīng)匹配的序列集S中的每個序列的前綴轉化為頻繁序列模式的序號,繼續(xù)匹配序列集S中的每個序列的后綴,直到序列集S中每個序列匹配結束;第三步刪除序列集S中未標記的函數(shù)或函數(shù)序列;5)隱馬爾可夫模型的參數(shù)讀入上一步中得到的最終標記序列集,通過以下公式計算隱馬爾可夫模型的初始狀態(tài)概率πi、狀態(tài)轉移概率aij和輸出概率bi(Ok),<mathsid="math0001"num="0001"><math><![CDATA[<mrow><msub><mi>π</mi><mi>i</mi></msub><mo>=</mo><mfrac><mrow><mi>C</mi><mrow><mo>(</mo><msub><mi>X</mi><mn>1</mn></msub><mo>=</mo><msub><mi>S</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow><mrow><munderover><mi>Σ</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mi>C</mi><mrow><mo>(</mo><msub><mi>X</mi><mn>1</mn></msub><mo>=</mo><msub><mi>S</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></mfrac><mo>,</mo><mn>1</mn><mo>≤</mo><mi>i</mi><mo>≤</mo><mi>N</mi></mrow>]]></math></maths>公式中,X1代表每個序列中第一次出現(xiàn)的頻繁模式,Si表示頻繁序列模式集中的第i個頻繁序列模式,C(X1=Si)表示最終標記序列集中以Si為初始狀態(tài)的序列個數(shù),<mathsid="math0002"num="0002"><math><![CDATA[<mrow><msub><mi>a</mi><mi>ij</mi></msub><mo>=</mo><mfrac><msub><mi>C</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mrow><munderover><mi>Σ</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>C</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msub></mrow></mfrac><mo>,</mo><mn>1</mn><mo>≤</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>≤</mo><mi>N</mi></mrow>]]></math></maths>公式中,Ci,j表示最終標記序列集中從頻繁序列模式Si轉移到頻繁序列模式Sj的次數(shù),<mathsid="math0003"num="0003"><math><![CDATA[<mrow><msub><mi>b</mi><mi>i</mi></msub><mrow><mo>(</mo><msub><mi>O</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>=</mo><mfrac><msub><mi>C</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mrow><munderover><mi>Σ</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>M</mi></munderover><msub><mi>C</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msub></mrow></mfrac><mo>,</mo><mn>1</mn><mo>≤</mo><mi>i</mi><mo>≤</mo><mi>N</mi><mo>,</mo><mn>1</mn><mo>≤</mo><mi>j</mi><mo>≤</mo><mi>M</mi></mrow>]]></math></maths>公式中,Ci,k表示在最終標記序列集中頻繁序列模式Si中出現(xiàn)序列Ok的次數(shù),O表示系統(tǒng)調(diào)用序列中各個函數(shù)集合;6)識別異常的系統(tǒng)調(diào)用序列中的頻繁序列模式假設異常系統(tǒng)調(diào)用序列長度為T,識別過程如下第一步初始化先求出初始頻繁序列模式的概率δ1(i),δ1(i)=πibi(O1),i=1~N同時令W1(i)=0,W是一個二維矩陣,記錄各個δt(i),1≤t≤T的得勝節(jié)點,第二步遞推求t長度時頻繁序列模式的最大概率δt(j),<mathsid="math0004"num="0004"><math><![CDATA[<mrow><msub><mi>δ</mi><mi>t</mi></msub><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mo>{</mo><mmultiscripts><mrow><mo>[</mo><msub><mi>δ</mi><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><msub><mi>a</mi><mi>ij</mi></msub><mo>]</mo></mrow><mprescripts/><mrow><mi>i</mi><mo>=</mo><mn>1</mn><mo>~</mo><mi>N</mi></mrow><mi>max</mi></mmultiscripts><mo>}</mo><msub><mi>b</mi><mi>j</mi></msub><mrow><mo>(</mo><msub><mi>o</mi><mi>t</mi></msub><mo>)</mo></mrow><mo>,</mo><mi>t</mi><mo>=</mo><mn>2</mn><mo>~</mo><mi>T</mi><mo>,</mo><mi>j</mi><mo>=</mo><mn>1</mn><mo>~</mo><mi>N</mi></mrow>]]></math></maths>對t長度時的每個頻繁序列模式,記錄該δt(j)的得勝節(jié)點,<mathsid="math0005"num="0005"><math><![CDATA[<mrow><msub><mi>W</mi><mi>t</mi></msub><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mmultiscripts><mrow><mo>[</mo><msub><mi>δ</mi><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><msub><mi>a</mi><mi>ij</mi></msub><mo>]</mo><mo>,</mo><mi>t</mi><mo>=</mo><mn>2</mn><mo>~</mo><mi>T</mi><mo>,</mo><mi>j</mi><mo>=</mo><mn>1</mn><mo>~</mo><mi>N</mi></mrow><mprescripts/><mrow><mi>i</mi><mo>=</mo><mn>1</mn><mo>~</mo><mi>N</mi></mrow><mi>arg</mi></mmultiscripts></mrow>]]></math></maths>第三步終止求出最優(yōu)總概率<mathsid="math0006"num="0006"><math><![CDATA[<mrow><msubsup><mi>p</mi><mi>r</mi><mo>*</mo></msubsup><mo>=</mo><mmultiscripts><mrow><mo>[</mo><msub><mi>δ</mi><mi>T</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>]</mo></mrow><mprescripts/><mrow><mi>i</mi><mo>=</mo><mn>1</mn><mo>~</mo><mi>N</mi></mrow><mi>max</mi></mmultiscripts></mrow>]]></math>id="icf0006"file="A2008100626350004C2.tif"wi="25"he="4"top="43"left="72"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>求出最終選定<mathsid="math0007"num="0007">id="icf0007"file="A2008100626350004C3.tif"wi="32"he="4"top="51"left="72"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>第四步最優(yōu)頻繁序列模式回溯由qt+1*反查W記錄,得到qt*,t=T-1,T-2,...,1;7)模糊處理qt*對qt*進行模糊匹配處理,步驟如下第一步對qt*從前往后搜索,找出連續(xù)兩個及以上相同的頻繁序列模式FP,同時將頻繁序列模式FP對應的位置作為匹配的初步起點;第二步使用基于編輯距離的字符串匹配方法對qt*與頻繁序列模式匹配,步驟如下a)從頻繁序列模式集中取得頻繁序列模式FP的序列及其長度;b)將第一步中的初步起點加上FP的長度作為初步終點,將初步起點和初步終點分別向前和向后加上m長度,得到序列TS,m=2或3,采用KMP算法對序列TS與頻繁序列模式FP匹配;c)按下式計算TS與FP的匹配率MP<mathsid="math0008"num="0008"><math><![CDATA[<mrow><mi>MP</mi><mo>=</mo><mfrac><mrow><mi>n</mi><mn>1</mn></mrow><mrow><mi>n</mi><mn>2</mn></mrow></mfrac><mo>></mo><mi>min</mi><mo>_</mo><mi>matching</mi></mrow>]]></math></maths>n1代表匹配上的序列個數(shù),n2代表頻繁序列模式的長度,min_matching為最小匹配率,如果MP大于min_matching,則說明TS匹配上FP,將TS識別為FP;第三步將TS識別后的終點作為下一次匹配的起點,重復前兩步,直到完成序列qt*的全部識別,得到最終序列FS,調(diào)試完畢。全文摘要本發(fā)明公開的一種基于序列模式挖掘的程序級操作系統(tǒng)調(diào)試方法,包括通過序列模式挖掘來找到所有頻繁系統(tǒng)調(diào)用序列模式,計算隱馬爾可夫模型中的各項參數(shù)來識別異常系統(tǒng)調(diào)用序列。該方法提出了利用序列模式挖掘方法對桌面操作系統(tǒng)中的系統(tǒng)調(diào)用序列集進行模式挖掘,找到所有頻繁序列集,利用頻繁序列集訓練隱馬爾可夫模型,通過馬爾可夫模型來最終識別異常系統(tǒng)調(diào)用序列,能夠準確、快速的定位整個桌面操作系統(tǒng)bug所在位置,有利于用戶不斷完善操作系統(tǒng)。文檔編號G06F11/36GK101308473SQ20081006263公開日2008年11月19日申請日期2008年6月27日優(yōu)先權日2008年6月27日發(fā)明者卜佳俊,張毅超,盛其彬,琰羅,暉蔡,華陳申請人:浙江大學