999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于異常控制流的錯誤程序行為分析方法

2018-08-07 12:38:10江建慧吳捷程
關(guān)鍵詞:程序故障分析

江建慧, 吳捷程, 孫 亞

(同濟大學(xué) 軟件學(xué)院, 上海 201804)

錯誤程序行為(erroneous program behavior, EPB) 分析主要是獲取程序差錯及其對程序行為的影響,包括差錯類型、差錯發(fā)生位置、差錯發(fā)生時機,以及各個差錯在程序中的表象.

軟件故障注入技術(shù)通過人為地對軟件或計算機等目標系統(tǒng)注入軟件故障來加速其失效,從而實現(xiàn)目標系統(tǒng)的容錯機制有效性驗證、可靠性評估[1-2].然而,如何得到真實的軟件故障或差錯數(shù)據(jù)是該技術(shù)實現(xiàn)的前提[1-4].

具有代表性的軟件差錯數(shù)據(jù)獲取需要分析軟件的功能特性及其在某個故障/缺陷被激活后所表現(xiàn)出的錯誤行為[2-3,5],工作量很大,且分析周期很長[1,3].常見的正交缺陷分類(orthogonal defect classification, ODC)所屬故障被激活后所產(chǎn)生的程序差錯形式隨程序?qū)崿F(xiàn)的不同而不同[1],可能以返回碼或共享變量的形式存在于應(yīng)用程序與其使用的庫函數(shù)之間[2,6],也可能以異常的形式在程序中進行傳播[5-6],或以跳轉(zhuǎn)指令的組合形式出現(xiàn)[7].

在具有異常處理機制的程序中,故障激活后所產(chǎn)生的差錯若被異常處理機制偵測,則異常發(fā)生[8-9].若對該異常處理不當,則可引起程序失效[9].這一過程將形成“故障-差錯-異常-失效”鏈.

通過對程序異常控制流(exception control flow,ECF)的分析可收集能夠引起異常的差錯信息,包括:由異常類型獲取差錯內(nèi)容;由異常引發(fā)點獲取差錯被偵測時的物理位置;由異常傳播路徑獲取差錯的影響范圍;由異常捕捉情況獲取差錯是否得到修正的信息.這些信息可指導(dǎo)軟件故障注入方案生成所需的差錯類型、注入位置、注入時機的選擇[4-5,10-11].該過程通過源代碼的靜態(tài)分析,可在相對較短的時間內(nèi)完成.

本文的主要工作是通過故障注入實驗分析程序的“故障-差錯-異常”的傳播機理;結(jié)合函數(shù)級ECF(function-level ECF,F(xiàn)ECF)的描述,分析了同一差錯與多個程序ECF之間的關(guān)系,利用ECF對程序中潛在可引起異常的差錯進行分析,建立了EPB模型;實現(xiàn)了一個自動分析工具軟件,并以O(shè)penStack的核心組件為對象進行了實驗驗證.

1 相關(guān)工作

Christmansson等[3]認為只有注入具有代表性的差錯才能有效地模擬真實故障的發(fā)生,有效地驗證軟件的容錯機制.考慮應(yīng)用程序和函數(shù)庫之間的潛在錯誤的故障注入工具LFI(庫文件故障注入器)改善了應(yīng)用程序的健壯性測試技術(shù)[2].基于窮盡異常模擬模式的測試方法結(jié)合異常發(fā)生的時序特點在異常引發(fā)點注入異常,簡化了異常處理結(jié)構(gòu)有效性驗證的過程[5].上述工作強調(diào)了故障/差錯數(shù)據(jù)的有效性,討論了如何利用差錯數(shù)據(jù)進行軟件容錯機制的驗證,但其尚未涉及如何有效地收集合理的差錯數(shù)據(jù).

關(guān)于軟件故障激活后的傳播過程及證明故障激活后能否轉(zhuǎn)化為差錯的研究,有基于“故障-差錯-失效”的傳播關(guān)系選擇具有代表性的差錯集合的方法[5].通過代碼內(nèi)部的故障注入和接口差錯注入的實驗研究結(jié)果表明,兩者對程序的影響存在一定的差異[4].代碼故障激活后的差錯不僅能以返回值、錯誤碼、傳入/傳出參數(shù)的方式進行傳播,還能以共享內(nèi)存數(shù)據(jù)為載體對程序造成影響[11].應(yīng)從多維度對故障注入后的EPB進行收集、分析、歸類,從而使得各層次的EPB研究可得到相關(guān)數(shù)據(jù)的支撐,實驗表明,故障激活后所產(chǎn)生的差錯能以返回值或異常形式進行傳播,且該差錯被偵測的情況和是否引起程序失效取決于程序的實現(xiàn)[6].這些工作均未深入研究具有異常處理機制的程序中的“故障-差錯-異常”過程.

大多數(shù)與程序ECF相關(guān)的研究工作主要聚焦在它對程序分析、開發(fā)、測試的影響上.如基于異常傳播分析的C++程序數(shù)據(jù)流分析方法[12]、依賴性分析方法[13].Harrold等[14-15]在對異常處理機制的測試標準進行研究時,考慮了異常處理機制和異常傳播對程序控制流、數(shù)據(jù)流、控制依賴性等分析技術(shù)的影響.用于程序開發(fā)、維護、測試的系統(tǒng)化方法通過分析顯式ECF,總結(jié)了與異常處理結(jié)構(gòu)實現(xiàn)相關(guān)的編程錯誤模式,可指導(dǎo)開發(fā)者如何有效地避免異常處理機制的錯誤使用[16].面向切面機制在一些情景下會使異常處理結(jié)構(gòu)的實現(xiàn)復(fù)雜化,從而降低系統(tǒng)的可靠性[17].Jo等[18]提出了一種基于集合分析的函數(shù)級別上的Java未捕捉異常分析方法.結(jié)合運行時異常的靜態(tài)測試方法通過交替執(zhí)行缺陷檢測及控制流擴展,提高了測試充分度,還分析了運行時異常對軟件靜態(tài)測試的影響[19].這些與程序ECF相關(guān)的研究工作并未考慮到異常本身就是程序錯誤的一種表象,所以沒有利用異常相關(guān)的信息來分析潛在的EPB.

2 程序“故障-差錯-異常”機理分析

2.1 ODC故障注入實驗分析

異常處理機制(exception handling mechanism,EHM)是程序錯誤處理的常用手段之一.當程序中EHM偵測到差錯且引發(fā)異常之后,程序的“故障-差錯-異常/失效”過程如圖1所示.

對Android上約800個應(yīng)用組件所進行的600萬次基于外界輸入的健壯性測試實驗數(shù)據(jù)表明,約10%的應(yīng)用組件發(fā)生了崩潰且均由未捕捉到的異常所造成[6].

本文以分布式網(wǎng)絡(luò)基準程序Ipbench和OpenStack中的核心組件nova為對象,結(jié)合ODC故障類型及其分布數(shù)據(jù),以代碼變異的方式實施故障注入實驗,實驗結(jié)果見表1(表中的E表示可引起異常的故障數(shù)量).

在Ipbench中共注入348個故障,其中255個故障導(dǎo)致了程序崩潰,且249次崩潰是由未捕捉異常引起.

在nova中共注入1 018個故障,未出現(xiàn)程序崩潰現(xiàn)象.由表1可知,419個故障激活后的差錯得到程序的修正,可能的原因有:① 有差錯的數(shù)據(jù)在被使用之前重新得到初始化;② 有差錯程序的執(zhí)行結(jié)果與無差錯程序的執(zhí)行結(jié)果一致;③ 差錯引起異常且被捕獲,異常處理例程提供了正確的服務(wù).

表1 故障注入實驗結(jié)果Tab.1 Results of fault-injection experiments

2.2 傳播機理分析

以nova的_validate_cell函數(shù)為例,程序的“故障-差錯-異常”傳播過程分析如下:

(1) 故障激活所發(fā)生的差錯直接引發(fā)異常.如圖2所示,故障激活后的差錯直接在當前函數(shù)內(nèi)使raise語句得到執(zhí)行,從而引發(fā)異常.同時,圖2中場景a)與b)的故障激活后均引起了同一異常,說明程序中故障與異常存在多對一關(guān)系,即多個故障激活后的差錯最終均以同一異常在程序中進行傳播.

(2) 故障激活所發(fā)生的差錯經(jīng)過傳播后引發(fā)異常.圖3所示的故障激活后的差錯通過數(shù)據(jù)流影響控制流,最終使得raise語句得到執(zhí)行,引發(fā)異常.

(3) 在程序無故障的情況下,外界輸入或外界資源違反軟件規(guī)約而導(dǎo)致異常發(fā)生.

因此,可從“異常”層次出發(fā),分析程序中可引起異常的差錯信息及其對程序行為的影響,達到分析與異常相關(guān)的EPB的目的.

圖2 差錯直接引起異常例子Fig.2 Example of an error raises exception directly

3 基于ECF的EPB分析

為了獲取可引起異常的差錯的信息,本文方法并不需要構(gòu)建帶有程序ECF的完整過程間控制流[20],而只需獲取獨立的ECF信息,包括:ECF起始與中止位置信息;ECF對應(yīng)的異常類型;異常是否被捕捉;ECF所影響到的函數(shù);ECF所影響到的程序功能或服務(wù).這是一種基于源代碼靜態(tài)分析的方法,如何選擇起始函數(shù)作為分析的起始點,則直接影響到了分析結(jié)果的有效性.

3.1 函數(shù)級ECF的描述

圖4所示的是函數(shù)級異常傳播過程,其中nk(1≤k≤m,m≥1)表示函數(shù),其他符號的意思在圖中已經(jīng)加以說明.以函數(shù)為粒度的異常傳播過程可分為A,B和C三類.

(1) 過程A:異常在當前函數(shù)nm被引發(fā),而且被捕捉.

(2) 過程B:異常在當前函數(shù)nm被引發(fā),且沿著函數(shù)調(diào)用棧經(jīng)過m-k逆向傳播后在函數(shù)nk中被捕捉,1≤k≤m.

(3) 過程C:異常在當前函數(shù)nm被引發(fā),且沿著函數(shù)調(diào)用棧經(jīng)過m-1次逆向傳播,變成未捕捉異常.

圖3差錯經(jīng)過傳播而引起異常的例子

Fig.3Exampleofanerrorraisesexceptionwithcertainpropagation

圖4 函數(shù)級的異常傳播過程Fig.4 Exception propagation process at function level

定義1程序P中由raise/throw語句顯式引起的FECF可表示為5元組Ψ=,其中:

(1)ol=(n,lo)為Ψ的起始位置,表示Ψ由函數(shù)no中代碼行號為lo的raise/throw語句所引發(fā).

(2)t為Ψ所對應(yīng)的異常類型.

(3)z=(nz,lz)為Ψ的終止位置.若Ψ屬于過程A或B,則nz為Ψ被捕捉時所在的函數(shù),其對應(yīng)的異常捕捉語句的行號為lz;若Ψ屬于過程C,則Ψ在程序P的函數(shù)nz處終止且傳播出去,lz為Ψ進入函數(shù)nz時的異常入口所對應(yīng)的語句的代碼行號.

(4)π以路徑的形式給出了Ψ的傳播過程.若Ψ屬于過程A或B,則π為no→nm→…→n1→nz,其中no,nz,nk(k=1,2,…,m,m≥1)為Ψ所影響到的函數(shù);若Ψ屬于過程C,則π為no→nm→…→n1→nz→nout,其中nout為占位符,表示該路徑對應(yīng)的ECF未被捕捉.

(5)e為Ψ被引發(fā)時程序P的棧底函數(shù),表示被Ψ影響到的程序功能或服務(wù).

與文獻[4, 20]一致,本文也將入口函數(shù)(entry function, EF)作為函數(shù)調(diào)用鏈的分析起點,計算程序中所有潛在的FECF.

3.2 利用程序ECF表示EPB

同一差錯可引起不同的FECF.這些FECF組成的集合稱為FECF簇,對于其中的任意Ψi與Ψj,它們具有相同的o與t值.

根據(jù)“故障-差錯-異常”傳播機理,若故障激活后的差錯引起異常,則該故障對程序帶來的影響完全可由相應(yīng)的FECF簇表示.所以,可通過分析各FECF簇,反向推導(dǎo)程序中可引起異常的各個差錯及其對程序行為的影響,從“異常”層次分析與異常相關(guān)的EPB,收集可引起異常的差錯集合.

3.3 基于程序ECF的EPB分析

(3)w為一權(quán)值,即:

(1)

觀察1w值越大,則EPB對程序可靠性造成危害的風(fēng)險越大.

異常傳播過程B與C的發(fā)生會使程序的過程間控制流中產(chǎn)生潛在的非返回調(diào)用[15],它的數(shù)量(即w值)越大,就意味著異常的傳播范圍越大,所以程序的控制流、數(shù)據(jù)流在錯誤狀態(tài)下受到的影響越大.

算法Gen_FECF: 計算一個FECF實例

輸入s: 函數(shù)m中的raise/throw語句

m: 語句s所位于的函數(shù)

輸出Ψ: 一個FECF實例

聲明 callstack: 遍歷分析函數(shù)調(diào)用鏈時所維護的函數(shù)調(diào)用棧

CTS(m): 函數(shù)m的調(diào)用者(caller)調(diào)用函數(shù)m時所使用的函數(shù)調(diào)用語句

開始 Gen_FECF(s,m)

1. 新建Ψ實例并設(shè)置其屬性:o←(m,s的行號),t←s對應(yīng)的異常類型,π設(shè)置為m,e←callstack的棧底函數(shù);

2. If SLEGS(s)存在c可捕捉由s引發(fā)的異常 then

3.z←(m,c的代碼行號),m加入π:m→m;

4. returnΨ;

5. else then //當前函數(shù)m無法捕捉該異常

6. temp_stack為callstack的副本;

7.send←s; //用于暫存Ψ終止時的語句

8. While temp_stack不為空:

9.mtop←temp_stack.top();

10. temp_stack.pop();

11. if m!=mtopthen 將mtop加入πendif

12. if temp_stack is empty: //未捕捉異常

13.z←(mtop,send的行號);

14. ifm!=mtopthen

15. 將nout加入π;

16. else

17. 將m→nout加入π;

18. endif

19. returnΨ;

20. else if SLEGS(CTS(mtop))有c可捕捉then

21.z←(temp_stack.top(),c的行號);

22. 將temp_stack.top()加入π;

23. returnΨ;

24. endif

25.send←CTS(mtop) ;

26. endwhile

27. endif

結(jié)束Gen_FECF

在計算所有FECF時,e可用于表示FECF所影響到的程序功能或服務(wù).

若在函數(shù)遞歸過程中出現(xiàn)異常,則異常在該部分的傳播路徑呈現(xiàn)一定的模式.所以,可根據(jù)該模式制定合理的裁剪規(guī)則,對遞歸部分的調(diào)用鏈進行裁剪,使得分析過程能夠有效地繼續(xù)執(zhí)行下去.

在算法Gen_FECF中,函數(shù)調(diào)用棧是根據(jù)函數(shù)調(diào)用鏈生成的.由于調(diào)用鏈經(jīng)過了遞歸調(diào)用鏈裁減處理,并且調(diào)用鏈中所有函數(shù)都屬于程序P,函數(shù)調(diào)用棧的深度最多為2·|FDS(P)|-2,其中FDS(P)為定義于程序P中且在程序P中實現(xiàn)的函數(shù)集合.算法Gen_FECF在最好情況下的時間復(fù)雜度為O(1),在最壞情況下為O(|FDS(P)|).

根據(jù)EHM的性質(zhì)[14],對于異常的傳播及其處理過程,異常保護區(qū)z(try語句所保護的代碼塊)的異常保護序列EGS(z)指的是z對應(yīng)的異常處理例程所組成的有序序列(c1,c2,…,cn),n≥1,其順序由z對應(yīng)的異常處理例程的順序決定.假如zj嵌套于zi之中,那么傳播到zj中的異常首先會被EGS(zj)中的異常處理例程嘗試捕捉處理,若該異常未被捕捉,則EGS(zi)再嘗試對其捕捉處理,則LEGS(zj)=(cj1,cj2,…,cjn,ci1,ci2,…,cim),若zi不嵌套于任何異常保護區(qū)中,則LEGS(zi)=EGS(zi)=(ci1,ci2,…,cim),m≥1,n≥1.若語句s位于z中,則語句s受到LEGS(z)的保護,記為SLEGS(z).若有異常在s(raise/throw語句)處被拋出或異常傳播至s(函數(shù)調(diào)用語句)處,若SLEGS(s)能捕捉該異常,則該異常在s語句所在的函數(shù)中被捕捉,否則該異常從當前函數(shù)傳播出去且沿著函數(shù)調(diào)用棧逆向傳播.

在形如(m1,m2, …,mn-1,mn)所表示的調(diào)用棧中,m1表示棧底,mn表示棧頂,n≥1.suc(mi)是mi的后繼mi+1,n≥i≥1,suc(mn)=null.CTS(suc(mk))為函數(shù)mk中調(diào)用函數(shù)suc(mk)時的函數(shù)調(diào)用語句,且CTS(null) =null.為不失一般性,調(diào)用鏈的遞歸裁剪遵循如下規(guī)則.

規(guī)則1設(shè)當前函數(shù)調(diào)用棧具有以下形式:(mbottom, …,M1,M2, …,Mn,M11,M12, …,M1n, …,Mk1,Mk2, …,Mkn, …,Mq1,Mq2, …,Mqp,mother, …),其中,Mkn表示函數(shù)Mn的第k次遞歸調(diào)用,k≥1.Mqp表示函數(shù)Mp第q次遞歸調(diào)用,q>k,n≥p≥0.若?i,j,k≥i,j≥1,式(2)得到滿足,則調(diào)用棧可裁剪為(mbottom, …,M1,M2, …,Mn,Mq1,Mq2, …,Mqp,mother, …),且FECF的o、t、z、e屬性值保持不變,π中受到FECF影響的函數(shù)及其順序不變.

SLEGS(CTS(Mi1))=SLEGS(CTS(Mj1))=SLEGS(CTS(Mq1))

SLEGS(CTS(Mi2))=SLEGS(CTS(Mj2))=SLEGS(CTS(M2))

(2)

SLEGS(CTS(Min))=SLEGS(CTS(Mjn))=SLEGS(CTS(Mn))

證明.

情形一:若在Mkn中無異常發(fā)生,n≥1,則無FECF的生成受到裁剪動作的影響.

情形二:假如異常x在函數(shù)Mkn中由raise/throw語句引發(fā),k≥1,n≥1:① 若x在Mkn中捕捉,則會有與異常x相同的異常在函數(shù)Mn中由相同的raise/throw語句引發(fā)且被相同catch/except語句捕捉,因為Mkn與Mn為相同函數(shù).② 若x從Mkn傳播出去,則會有與異常x相同的異常在函數(shù)Mn中由相同的raise/throw語句引發(fā)且從相同的異常出口從Mn傳播出去,因為Mkn與Mn為相同函數(shù).

情形三:假如異常x通過CTS(suc(Mkn))語句從suc(Mkn)函數(shù)傳播至Mkn中,k≥1,n≥1:① 若x在Mkn中捕捉,則會有與異常x相同的異常y通過CTS(suc(Mn))語句從suc(Mn)傳播至Mn,且在Mn中由相同的catch/except語句捕捉.因為suc(Mn)與suc(Mkn)為相同函數(shù),CTS(suc(Mn))與CTS(suc(Mkn))為同一函數(shù)調(diào)用語句,且SLEGS(CTS(suc(Mn))) =SLEGS(CTS(suc(Mkn))).② 若x從Mkn中傳播出去,則會有異常x相同的異常y從Mn中的相同異常出口傳播出去.因為suc(Mn)與suc(Mkn)為相同函數(shù),CTS(suc(Mn))與CTS(suc(Mkn))為同一函數(shù)調(diào)用語句,且SLEGS(CTS(suc(Mn))) =SLEGS(CTS(suc(Mkn))).

2. 將調(diào)用棧callStack初始化為空;

3. Traverse_Invocation_Chain(m);

4. endfor

/*遍歷以m開始的函數(shù)調(diào)用鏈,用Gen_FECF算法生成FECF實例*/

聲明 Traverse_Invocation_Chain (m)

1. callstack.push(m); //維護調(diào)用棧,m入棧

2. for each 語句sinmthen

3. ifs是raise/throw語句then

4.Ψ←Gen_FECF(s,m);

6. else ifs是調(diào)用函數(shù)mcallee的語句then

7. ifmcallee在callstack出現(xiàn)過兩次and

8. SLEGS(CTS(mcallee))=SLEGS(s) then

9. continue; //滿足要求,裁剪

10. else then //繼續(xù)分析調(diào)用鏈

11. Traverse_Invocation_Chain (mcallee);

12. endif

13. endif

14. end for

15. Callstack.pop(m) //維護調(diào)用棧,m出棧

2. existEPB← null

4. IfΨ.o=Ω.oandΨ.t=Ω.tthen

5. existEPB ←Ω; break;

6. endif

7. endfor

8. if null = existEPB then //暫無相應(yīng)FECF簇

13. else then //將Ψ加入對應(yīng)簇的EPB實例

14. existEPB.w← existEPB.w+φ(Ψ);

17. endif

18. endfor

4 基于Understand的自動分析工具

4.1 EPB自動分析工具的結(jié)構(gòu)

采用本文提出的方法,用Python語言編寫了一個基于Understand的EPB自動分析工具,其架構(gòu)如圖5所示.Understand是一款代碼審核工具,提供了可操作源代碼相關(guān)數(shù)據(jù)的API,如詞法、語法、函數(shù)調(diào)用關(guān)系等信息.

圖5 EPB自動分析工具架構(gòu)Fig.5 Structure of automatic analysis tool of EPB

分析控制器:控制整個分析過程,包括:調(diào)用鏈的遍歷分析、局部視圖數(shù)據(jù)生成、FECF數(shù)據(jù)生成、EPB數(shù)據(jù)生成、函數(shù)調(diào)用棧的維護等.

局部視圖生成器: 函數(shù)代碼中與FECF生成相關(guān)的數(shù)據(jù)以文件形式存儲,內(nèi)容包括: ① raise/throw語句的位置、對應(yīng)的異常類型;② 在當前函數(shù)被引發(fā)的異常捕捉情況,記錄捕捉該異常的catch/except語句的位置及其對應(yīng)的異常類型;③ 當前函數(shù)的函數(shù)調(diào)用關(guān)系信息;④ 當前函數(shù)中的函數(shù)調(diào)用語句是否處于異常保護區(qū)中,若是,則記錄相應(yīng)的catch/except語句位置及其對應(yīng)的異常類型.

FECF生成器:當異常以raise/throw形式被引發(fā)時,結(jié)合相應(yīng)的局部視圖數(shù)據(jù),根據(jù)Gen_FECF算法生成相應(yīng)FECF數(shù)據(jù).

4.2 EPB自動分析工具的使用步驟

自動分析工具進行EPB分析的主要步驟如下:

(1) 以源代碼為輸入,使用Understand軟件生成程序的詞法、語法、函數(shù)調(diào)用關(guān)系等數(shù)據(jù).

(2) 以s為分析起點,s∈SEF,迭代分析其函數(shù)調(diào)用鏈,檢查函數(shù)內(nèi)是否有被raise/throw語句引發(fā)的異常.若存在異常,則轉(zhuǎn)(3);否則,繼續(xù)按照(2)分析函數(shù)調(diào)用鏈中未被分析的函數(shù),直到所有調(diào)用鏈分析完畢,轉(zhuǎn)(4).

5 實驗及其分析

為了驗證本文方法及所開發(fā)的程序EPB自動分析工具的合理性和有效性,以O(shè)penStack的核心組件作為對象進行了實驗.

5.1 實驗環(huán)境

實驗在虛擬機上進行,操作系統(tǒng)為內(nèi)核版本2.6.32的32位Linux,硬件配置為1GB內(nèi)存,Intel(R) Core(TM) i3-3217U@1.80GHz單核CPU.實驗負載為OpenStack(G 版本)中的5個核心組件,該軟件用Python語言編寫,各組件的SEF數(shù)據(jù)均根據(jù)相應(yīng)的應(yīng)用程序編程接口(application programming interface, API)文檔人工收集而得.

5.2 實驗結(jié)果與分析

對27 876行OpenStack組件的錯誤行為的實驗結(jié)果見表2,其中duser=10 000表示用戶指定的閾值.

表2 OpenStack組件錯誤行為分析結(jié)果Tab.2 Analysis results of erroneous OpenStack component behavior

調(diào)用鏈中函數(shù)調(diào)用點總量與函數(shù)數(shù)量的比值為10 408/1 426=7.3,說明每個函數(shù)平均被調(diào)用了7.3次,若差錯在函數(shù)中引起異常,則該異常可潛在引起由7個不同ECF組成的FECF簇,表明從異常角度對差錯及其對程序行為影響進行分析是可行的.

圖6 nova組件中以w排序的前十個EPB實例數(shù)據(jù)Fig.6 Top ten EPB Ω ordered by w in nova components

6 結(jié)束語

本文通過故障注入實驗研究了具有EHM的程序的軟件故障、差錯、異常之間的傳播機理.結(jié)合FECF的描述,說明了如何利用ECF收集與異常相關(guān)的差錯信息,建立了基于ECF的EPB模型,開發(fā)了基于該模型的EPB自動分析工具,并用該工具對OpenStack核心組件進行了錯誤行為分析,結(jié)果表明了基于ECF的EPB分析的合理性和有效性.該方法及其工具為具有EHM的大規(guī)模程序的EPB自動分析,指導(dǎo)程序異常處理結(jié)構(gòu)的重構(gòu),使程序可精確捕捉異常,提高程序可靠性,并為構(gòu)造合理的外部激勵精確激活差錯,縮短故障注入實驗周期提供了有效手段.

猜你喜歡
程序故障分析
隱蔽失效適航要求符合性驗證分析
故障一點通
試論我國未決羈押程序的立法完善
電力系統(tǒng)不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
電力系統(tǒng)及其自動化發(fā)展趨勢分析
奔馳R320車ABS、ESP故障燈異常點亮
創(chuàng)衛(wèi)暗訪程序有待改進
故障一點通
主站蜘蛛池模板: 欧美在线网| 亚洲成年网站在线观看| 97se亚洲综合在线韩国专区福利| 男女男精品视频| 色天天综合| 国产亚洲视频中文字幕视频| a天堂视频在线| 在线一级毛片| 久久网欧美| 国产精品网址你懂的| 亚洲成人网在线播放| 欧美三级日韩三级| 在线观看亚洲精品福利片| 国产精品综合久久久| 国产麻豆永久视频| 日本道中文字幕久久一区| 乱人伦中文视频在线观看免费| 国内毛片视频| 国产鲁鲁视频在线观看| 六月婷婷综合| 国产精品成人一区二区不卡| 亚洲成人精品| 强奷白丝美女在线观看 | 麻豆精品在线播放| 精品国产成人三级在线观看| 日韩高清欧美| 亚洲丝袜中文字幕| 国产青榴视频| 黄色三级网站免费| 在线观看亚洲成人| 欧美在线综合视频| 国产乱码精品一区二区三区中文 | 国产人在线成免费视频| 亚瑟天堂久久一区二区影院| 中国国产A一级毛片| 国产精品夜夜嗨视频免费视频| 71pao成人国产永久免费视频| 日本人妻丰满熟妇区| 久久综合色播五月男人的天堂| 日本一本正道综合久久dvd | 国产精品永久久久久| 日本不卡免费高清视频| 熟妇人妻无乱码中文字幕真矢织江| 中文字幕中文字字幕码一二区| 亚洲成肉网| 精品久久综合1区2区3区激情| 尤物特级无码毛片免费| 国产成人综合网在线观看| 国产毛片一区| 日韩第九页| 中文字幕有乳无码| 日韩在线1| 99视频精品在线观看| 国产精品性| jizz国产在线| 欧美高清三区| 国产自在线播放| 中文国产成人久久精品小说| 日韩欧美国产综合| 亚洲视频四区| 在线国产综合一区二区三区| 国产另类视频| 不卡的在线视频免费观看| 丁香六月综合网| 亚洲a免费| 欧美亚洲欧美区| 老司机精品99在线播放| 青青极品在线| 99人体免费视频| 在线日韩一区二区| 成人免费黄色小视频| 午夜福利无码一区二区| 在线欧美日韩| 欧美中文一区| 成人在线天堂| 伊人久久久久久久久久| 人妖无码第一页| 欧美啪啪精品| 国产成人三级在线观看视频| 国产成a人片在线播放| 一本大道视频精品人妻 | 大陆精大陆国产国语精品1024|