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