專利名稱:一種程序分析方法、系統(tǒng)、客戶端及服務(wù)器端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種程序分析方法、系統(tǒng)、客戶端及服務(wù)器端。
背景技術(shù):
所謂程序的容錯(cuò)性就是程序面對故障時(shí)的處理能力,以加法計(jì)算器程序?yàn)槔G闆r是“用戶輸入數(shù)字,單擊求和按鈕進(jìn)行求和”,針對正常情況的程序代碼即為加法計(jì)算器程序的預(yù)期代碼分支;故障情況是“用戶沒有輸入任何數(shù)字而單擊了求和按鈕”、“用戶輸入了幾個(gè)漢字并點(diǎn)擊求和按鈕”、“用戶輸入了一個(gè)很大的數(shù)字(超過了數(shù)據(jù)類型的范圍)并單擊求和按鈕”等等,針對故障情況的程序代碼即為加法計(jì)算器程序的非預(yù)期代碼分 支。程序的容錯(cuò)性使得程序在面對故障時(shí)依然可以基本正常的運(yùn)行。發(fā)明人發(fā)現(xiàn),現(xiàn)有的程序分析方案并未關(guān)注程序運(yùn)行過程中發(fā)生的故障,即現(xiàn)有方案并不對程序運(yùn)行非預(yù)期代碼分支時(shí)的故障進(jìn)行分析,僅在程序發(fā)生異常無法運(yùn)行時(shí)才進(jìn)行上報(bào)和處理,因此,現(xiàn)有的程序分析方案缺乏對程序的整體工作狀態(tài)和工作過程中出現(xiàn)的故障的分析,不利于程序的改進(jìn);另外,現(xiàn)有方案一般采用人工對程序異常情況進(jìn)行分析和處理,效率較低。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例所要解決的技術(shù)問題在于,提供一種程序分析方法、系統(tǒng),客戶端及服務(wù)器端,可對程序運(yùn)行過程中出現(xiàn)的故障情況進(jìn)行記錄、分析和處理,程序分析過程簡單、高效,且有利于程序的改進(jìn)。為了解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種程序分析方法,包括
客戶端記錄程序運(yùn)行的非預(yù)期代碼分支,并將記錄結(jié)果上報(bào)至服務(wù)器端;
所述服務(wù)器端根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,解析所述記錄結(jié)果,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。其中,所述客戶端記錄程序運(yùn)行的非預(yù)期代碼分支,并將記錄結(jié)果上報(bào)至服務(wù)器端,包括
當(dāng)程序運(yùn)行任一非預(yù)期代碼分支時(shí),客戶端在位段中將所述非預(yù)期代碼分支對應(yīng)的位進(jìn)行標(biāo)記,所述位段包括至少一個(gè)位,其中每一位對應(yīng)于所述程序的唯一一個(gè)非預(yù)期代碼分支;
當(dāng)所述程序運(yùn)行結(jié)束后,所述客戶端將所述位段上報(bào)至服務(wù)器端。其中,所述服務(wù)器端根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,解析所述記錄結(jié)果,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況,包括
服務(wù)器端接收并解析所述客戶端上報(bào)的位段,確定所述位段中各個(gè)標(biāo)記位對應(yīng)的非預(yù)期代碼分支;
所述服務(wù)器端根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,獲得各個(gè)非預(yù)期代碼分支對應(yīng)的故障;
所述服務(wù)器端根據(jù)各個(gè)非預(yù)期代碼分支對應(yīng)的故障,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。其中,所述服務(wù)器端根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,解析所述記錄結(jié)果,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況之后,還包括
所述服務(wù)器端根據(jù)所述程序運(yùn)行過程中出現(xiàn)的故障情況,生成所述程序的預(yù)警變化信
息;
所述服務(wù)器端輸出所述預(yù)警變化信息。相應(yīng)地,本發(fā)明實(shí)施例還提供了一種客戶端,包括 記錄單元,用于記錄程序運(yùn)行的非預(yù)期代碼分支;
上報(bào)單元,用于將所述記錄單元的記錄結(jié)果上報(bào)至服務(wù)器端。其中,所述記錄單元用于當(dāng)程序運(yùn)行任一非預(yù)期代碼分支時(shí),在位段中將所述非預(yù)期代碼分支對應(yīng)的位進(jìn)行標(biāo)記,所述位段包括至少一個(gè)位,其中每一位對應(yīng)于所述程序的唯一一個(gè)非預(yù)期代碼分支;
所述上報(bào)單元當(dāng)所述程序運(yùn)行結(jié)束后,將所述記錄單元標(biāo)記后的位段上報(bào)至服務(wù)器端。相應(yīng)地,本發(fā)明實(shí)施例還提供了一種服務(wù)器端,包括
接收模塊,用于接收客戶端上報(bào)的記錄結(jié)果;
故障分析模塊,用于根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,解析所述接收模塊接收的記錄結(jié)果,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。其中,所述接收模塊接收客戶端上報(bào)的位段;所述故障分析模塊包括
解析單元,用于解析所述接收模塊接收的位段,確定所述位段中各個(gè)標(biāo)記位對應(yīng)的非預(yù)期代碼分支;
故障確定單元,用于根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,獲得所述解析單元得到的各個(gè)非預(yù)期代碼分支對應(yīng)的故障;
分析單元,用于根據(jù)所述故障確定單元得到的各個(gè)非預(yù)期代碼分支對應(yīng)的故障,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。其中,所述服務(wù)器端還包括
預(yù)警生成模塊,用于根據(jù)所述程序運(yùn)行過程中出現(xiàn)的故障情況,生成所述程序的預(yù)警變化信息;
輸出模塊,用于輸出所述預(yù)警生成模塊生成的預(yù)警變化信息。相應(yīng)地,本發(fā)明實(shí)施例還提供了一種程序分析系統(tǒng),包括服務(wù)器端及至少一個(gè)客戶端,其中
所述客戶端,用于記錄程序運(yùn)行的非預(yù)期代碼分支,并將記錄結(jié)果上報(bào)至所述服務(wù)器
端;
所述服務(wù)器端,用于接收所述客戶端上報(bào)的記錄結(jié)果,并根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,解析所述記錄結(jié)果,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。實(shí)施本發(fā)明實(shí)施例,具有如下有益效果
I、本發(fā)明實(shí)施例的客戶端記錄程序運(yùn)行的非預(yù)期代碼分支,并將記錄結(jié)果上報(bào)至服務(wù)器端,由服務(wù)器端根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,獲得程序運(yùn)行過程中出現(xiàn)的故障情況,這種全流程故障記錄、匯總上報(bào)的分析方式,簡單、高效,有利于掌握程序的整體工作狀態(tài)和工作過程中出現(xiàn)的故障(細(xì)節(jié)),便于程序開發(fā)者即時(shí)改進(jìn)程序,即時(shí)調(diào)整程序的發(fā)布策略。2、本發(fā)明實(shí)施例的服務(wù)器端根據(jù)分析得到的程序運(yùn)行過程中出現(xiàn)的故障情況,生成預(yù)警變化信息并輸出,可使程序開發(fā)者能夠即時(shí)改進(jìn)程序,提高用戶對程序的使用體驗(yàn)。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明的程序分析系統(tǒng)的實(shí)施例的結(jié)構(gòu)示意圖;
圖2為本發(fā)明的位段的實(shí)施例的結(jié)構(gòu)示意 圖3為本發(fā)明的客戶端的實(shí)施例的結(jié)構(gòu)示意 圖4為本發(fā)明的服務(wù)器端的第一實(shí)施例的結(jié)構(gòu)示意 圖5為本發(fā)明的服務(wù)器端的第二實(shí)施例的結(jié)構(gòu)示意 圖6為本發(fā)明的服務(wù)器端的故障分析模塊的實(shí)施例的結(jié)構(gòu)示意 圖7為本發(fā)明的程序分析方法的第一實(shí)施例的流程 圖8為本發(fā)明的程序分析方法的第二實(shí)施例的流程圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。請參見圖1,為本發(fā)明的程序分析系統(tǒng)的實(shí)施例的結(jié)構(gòu)示意圖;所述系統(tǒng)包括至少一個(gè)客戶端10 (圖中僅對其一進(jìn)行標(biāo)號),服務(wù)器端20。所述客戶端10,用于記錄程序運(yùn)行的非預(yù)期代碼分支,并將記錄結(jié)果上報(bào)至所述服務(wù)器端20。具體實(shí)現(xiàn)中,所述客戶端10為連接于服務(wù)器端20的所有客戶端,圖I中僅示出三個(gè),實(shí)際應(yīng)用中并不限于三個(gè)。該客戶端10包括但不限于電腦、智能手機(jī)、PDA(PerSonalDigital Assistant,掌上電腦)、IPAD等終端。所述客戶端10可采用位段的方式記錄程序運(yùn)行的非預(yù)期代碼分支,其中,非預(yù)期代碼分支指針對程序運(yùn)行過程中可能出現(xiàn)的故障情況而開發(fā)的程序代碼。實(shí)際應(yīng)用中,程序一般包括預(yù)期代碼分支和非預(yù)期代碼分支,非預(yù)期代碼分支使得程序在面對故障時(shí)依然可以基本運(yùn)行,其體現(xiàn)了程序面對故障時(shí)的處理能力。其中,位段是指以位為最小單位的數(shù)據(jù)結(jié)構(gòu),所述位段包括至少一個(gè)位。具體請一并參見圖2,為本發(fā)明的位段的實(shí)施例的結(jié)構(gòu)示意圖,圖2中設(shè)定位段大小為1KB,總共包含32000位,對應(yīng)32000個(gè)非預(yù)期代碼分支。預(yù)先將程序的所有非預(yù)期代碼分支與位段中的位一一對應(yīng),比如某程序的第一段非預(yù)期代碼分支與位段中的第一位相對應(yīng),該程序的第二段非預(yù)期代碼分支與位段中的第二位相對應(yīng),該程序的第N段非預(yù)期代碼分支與位段中的第N位相對應(yīng);當(dāng)程序運(yùn)行了第一段非預(yù)期代碼分支,所述客戶端10即將位段中的第一位進(jìn)行標(biāo)記;當(dāng)程序運(yùn)行了第四段非預(yù)期代碼分支,所述客戶端10即將位段中的第四位進(jìn)行標(biāo)記(請參見圖2)。所述客戶端10采用按位標(biāo)記方式,將程序運(yùn)行的所有非預(yù)期代碼分支均進(jìn)行標(biāo)記,最后在程序運(yùn)行結(jié)束后,將位段上報(bào)至所述服務(wù)器端20。需要說明的是,所述客戶端10采用位段方式記錄時(shí),程序與位段可一一對應(yīng),也可采用一個(gè)位段對應(yīng)需要分析的所有程序;另外,程序運(yùn)行結(jié)束可以指程序運(yùn)行完成,也可以指程序出現(xiàn)異常無法運(yùn)行而結(jié)束。可以理解的是,所述客戶端10采用位段的方式記錄程序運(yùn)行非預(yù)期代碼分支僅為舉例,其他情況,比如若程序運(yùn)行過程中出現(xiàn)的非預(yù)期代碼分支較少 ,則可直接對非預(yù)期代碼分支進(jìn)行記錄,然后匯總記錄結(jié)果上報(bào)至所述服務(wù)器端20 ;再如所述客戶端10可采用位置信息記錄非預(yù)期代碼分支,如非預(yù)期代碼分支位于程序的多少行,等等,然后匯總記錄結(jié)果上報(bào)至所述服務(wù)器端20 ;上述其他情況下可類似分析,在此不贅述。所述服務(wù)器端20,用于接收所述客戶端10上報(bào)的記錄結(jié)果,并根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,解析所述記錄結(jié)果,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。所述服務(wù)器端20接收所述客戶端10上報(bào)的記錄結(jié)果,以位段為例,所述服務(wù)器端20首先接收所述客戶端10上報(bào)的位段,并解析所述位段中各個(gè)標(biāo)記位,確定每個(gè)標(biāo)記位對應(yīng)的程序運(yùn)行的非預(yù)期代碼分支,然后根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。具體實(shí)現(xiàn)中,每一個(gè)非預(yù)期代碼分支均對應(yīng)相應(yīng)的故障,比如硬盤寫程序的預(yù)期分支為硬盤寫操作成功;該程序的非預(yù)期代碼分支為硬盤寫操作失敗;當(dāng)程序運(yùn)行了硬盤寫程序的非預(yù)期代碼分支,則表明該程序運(yùn)行過程中出現(xiàn)了“硬盤寫操作失敗”的故障,所述服務(wù)器端20解析出該非預(yù)期代碼分支后,即根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,確認(rèn)所述硬盤寫操作程序運(yùn)行過程中出現(xiàn)了“硬盤寫操作失敗”的故障。需要說明的是,非預(yù)期代碼分支與故障的對應(yīng)關(guān)系在程序編寫過程中預(yù)先設(shè)定,每一個(gè)非預(yù)期代碼分支的出現(xiàn)即表示程序運(yùn)行過程中出現(xiàn)了相應(yīng)的故障,所述服務(wù)器端20通過解析客戶端10上報(bào)的位段,獲得所述程序運(yùn)行過程中出現(xiàn)的整體故障情況(即整個(gè)細(xì)節(jié))。本發(fā)明實(shí)施例可對程序運(yùn)行過程中出現(xiàn)的故障情況進(jìn)行記錄、分析和處理,程序分析過程簡單、高效,且有利于程序的改進(jìn)。為了更清楚地說明本發(fā)明,下面將對本發(fā)明的客戶端進(jìn)行詳細(xì)介紹。請參見圖3,為本發(fā)明的客戶端的實(shí)施例的結(jié)構(gòu)示意圖;所述客戶端10包括
記錄單元101,用于記錄程序運(yùn)行的非預(yù)期代碼分支。具體實(shí)現(xiàn)中,所述記錄單元101可采用位段的方式記錄程序運(yùn)行的非預(yù)期代碼分支,所述位段包括至少一個(gè)位,其中每一位對應(yīng)于所述程序的唯一一個(gè)非預(yù)期代碼分支。具體請一并參見圖2。預(yù)先將程序的所有非預(yù)期代碼分支與位段中的位一一對應(yīng),比如某程序的第一段非預(yù)期代碼分支與位段中的第一位相對應(yīng),該程序的第二段非預(yù)期代碼分支與位段中的第二位相對應(yīng),該程序的第N段非預(yù)期代碼分支與位段中的第N位相對應(yīng);當(dāng)程序運(yùn)行了第一段非預(yù)期代碼分支,所述記錄單元101即將位段中的第一位進(jìn)行標(biāo)記;當(dāng)程序運(yùn)行了第四段非預(yù)期代碼分支,所述記錄單元101即將位段中的第四位進(jìn)行標(biāo)記(請參見圖2)。所述記錄單元101采用按位標(biāo)記方式,將程序運(yùn)行的所有非預(yù)期代碼分支均進(jìn)行
I■■己 O需要說明的是,所述記錄單元101采用位段方式記錄時(shí),程序與位段可一一對應(yīng),也可采用一個(gè)位段對應(yīng)需要分析的所有程序。上報(bào)單元102,用于將所述記錄單元101的記錄結(jié)果上報(bào)至服務(wù)器端。所述上報(bào)單元102當(dāng)所述程序運(yùn)行結(jié)束后,將所述記錄單元101記標(biāo)記后的位段上報(bào)至服務(wù)器端,此處,程序運(yùn)行結(jié)束可以指程序運(yùn)行完成,也可以指程序出現(xiàn)異常無法運(yùn)行而結(jié)束。
可以理解的是,所述記錄單元101采用位段的方式記錄程序運(yùn)行非預(yù)期代碼分支僅為舉例,其他情況,比如若程序運(yùn)行過程中出現(xiàn)的非預(yù)期代碼分支較少,所述記錄單元101可直接對非預(yù)期代碼分支進(jìn)行記錄,然后匯總記錄結(jié)果由所述上報(bào)單元102上報(bào)至所述服務(wù)器端20 ;再如所述記錄單元101可采用位置信息記錄非預(yù)期代碼分支,如非預(yù)期代碼分支位于程序的多少行,等等,然后匯總記錄結(jié)果由所述上報(bào)單元102上報(bào)至所述服務(wù)器端20 ;上述其他情況下可類似分析,在此不贅述。本發(fā)明實(shí)施例可對程序運(yùn)行過程中出現(xiàn)的故障情況進(jìn)行記錄、上報(bào),有利于程序的分析處理和改進(jìn)。為了更清楚地說明本發(fā)明,下面將對本發(fā)明的服務(wù)器端進(jìn)行詳細(xì)介紹。請參見圖4,為本發(fā)明的服務(wù)器端的第一實(shí)施例的結(jié)構(gòu)示意圖;所述服務(wù)器端20包括
接收模塊201,用于接收客戶端10上報(bào)的記錄結(jié)果。具體實(shí)現(xiàn)中,根據(jù)所述客戶端10對程序運(yùn)行的非預(yù)期代碼分支所采用的記錄方式,所述接收模塊201接收到的所述客戶端10上報(bào)的記錄結(jié)果可以為位段,還可以為非預(yù)期代碼分支的直接匯總結(jié)果,或者是非預(yù)期代碼分支的位置信息記錄等等。故障分析模塊202,用于根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,解析所述接收模塊201接收的所述記錄結(jié)果,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。所述故障分析模塊202首先解析所述接收模塊201接收的位段中各個(gè)標(biāo)記位,確定每個(gè)標(biāo)記位對應(yīng)的程序運(yùn)行的非預(yù)期代碼分支,然后根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。具體實(shí)現(xiàn)中,每一個(gè)非預(yù)期代碼分支均對應(yīng)相應(yīng)的故障,比如硬盤寫程序的預(yù)期分支為硬盤寫操作成功,其非預(yù)期代碼分支為硬盤寫操作失??;當(dāng)程序運(yùn)行了硬盤寫程序的非預(yù)期代碼分支,則程序出現(xiàn)了 “硬盤寫操作失敗”的故障,所述故障分析模塊202解析出該非預(yù)期代碼分支后,即根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,確認(rèn)所述程序運(yùn)行過程中出現(xiàn)了“硬盤寫操作失敗”的故障。需要說明的是,非預(yù)期代碼分支與故障的對應(yīng)關(guān)系在程序編寫過程中預(yù)先設(shè)定,每一個(gè)非預(yù)期代碼分支的出現(xiàn)即表示程序運(yùn)行過程中出現(xiàn)了相應(yīng)的故障。本發(fā)明實(shí)施例可對程序運(yùn)行過程中出現(xiàn)的故障情況進(jìn)行分析和處理,程序分析過程簡單、高效,有利于程序的改進(jìn)。請參見圖5,為本發(fā)明的服務(wù)器端的第二實(shí)施例的結(jié)構(gòu)示意圖;與上一實(shí)施例相同,所述服務(wù)器端20包括接收模塊201和故障分析模塊202。本實(shí)施例中,所述服務(wù)器端20還包括
預(yù)警生成模塊203,用于根據(jù)所述程序運(yùn)行過程中出現(xiàn)的故障情況,生成所述程序的預(yù)
警變化信息。具體實(shí)現(xiàn)中,所述預(yù)警變化信息可以為所述程序運(yùn)行過程中的各個(gè)故障出現(xiàn)次數(shù)的排行。由于各個(gè)客戶端10均向服務(wù)器端20上報(bào)了記錄結(jié)果,所述服務(wù)器端20通過故障分析得到各個(gè)客戶端10的程序運(yùn)行過程中出現(xiàn)的故障情況,所述預(yù)警生成模塊203根據(jù)所述服務(wù)器端20分析得到的程序運(yùn)行過程中出現(xiàn)的故障情況,生成所述程序的預(yù)警變化信息,其中,生成預(yù)警變化信息的具體過程為所述預(yù)警生成模塊203統(tǒng)計(jì)各個(gè)客戶端10運(yùn)行的相同版本的相同程序出現(xiàn)的各個(gè)故障的排行,以及統(tǒng)計(jì)各個(gè)客戶端10運(yùn)行的不同版本的相同程序出現(xiàn)的各個(gè)故障的排行。輸出模塊204,用于輸出所述預(yù)警生成模塊203生成的預(yù)警變化信息。 所述輸出模塊204可采用曲線或報(bào)表的形式輸出所述預(yù)警生成模塊203生成的預(yù)警變化信息(即故障排行),方便程序開發(fā)者能夠即時(shí)改進(jìn)程序,即時(shí)調(diào)整程序的發(fā)布策略。本發(fā)明實(shí)施例可根據(jù)程序運(yùn)行過程中出現(xiàn)的故障情況生成預(yù)警變化信息,便于程序開發(fā)者即時(shí)改進(jìn)程序,即時(shí)調(diào)整程序的發(fā)布策略。為了更清楚地說明本發(fā)明,下面將對本發(fā)明的服務(wù)器端的故障分析模塊進(jìn)行詳細(xì)介紹。請參見圖6,為本發(fā)明的服務(wù)器端的故障分析模塊的實(shí)施例的結(jié)構(gòu)示意圖;所述故障分析模塊202包括
解析單元221,用于解析所述接收模塊201接收的位段,確定所述位段中各個(gè)標(biāo)記位對應(yīng)的非預(yù)期代碼分支。如前述,由于程序的所有非預(yù)期代碼分支與位段中的位一一對應(yīng),所述解析單元221在所述接收模塊201接收到客戶端10上報(bào)的位段后,解析所述位段,確定所述位段中各個(gè)標(biāo)記位對應(yīng)的非預(yù)期代碼分支。故障確定單元222,用于根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,獲得所述解析單元221得到的各個(gè)非預(yù)期代碼分支對應(yīng)的故障。具體實(shí)現(xiàn)中,每一個(gè)非預(yù)期代碼分支均對應(yīng)相應(yīng)的故障,比如硬盤寫程序的預(yù)期分支為硬盤寫操作成功;該程序的非預(yù)期代碼分支為硬盤寫操作失?。划?dāng)程序運(yùn)行了硬盤寫程序的非預(yù)期代碼分支,則表明該程序運(yùn)行過程中出現(xiàn)了 “硬盤寫操作失敗”的故障,所述故障確定單元222根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,確認(rèn)所述硬盤寫操作程序運(yùn)行過程中出現(xiàn)了 “硬盤寫操作失敗”的故障。分析單元223,用于根據(jù)所述故障確定單元222得到的各個(gè)非預(yù)期代碼分支對應(yīng)的故障,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。非預(yù)期代碼分支與故障的對應(yīng)關(guān)系在程序編寫過程中預(yù)先設(shè)定,每一個(gè)非預(yù)期代碼分支的出現(xiàn)即表示程序運(yùn)行過程中出現(xiàn)了相應(yīng)的故障,所述分析單元223根據(jù)所述故障確定單元222得到的各個(gè)非預(yù)期代碼分支對應(yīng)的故障,可確定所述程序運(yùn)行過程中出現(xiàn)的整體故障情況(即整個(gè)細(xì)節(jié))。本發(fā)明實(shí)施例可對程序運(yùn)行過程中出現(xiàn)的故障情況進(jìn)行分析和處理,程序分析過程簡單、高效,有利于程序的改進(jìn)。為了更清楚地說明本發(fā)明,下面將對本發(fā)明的程序分析方法進(jìn)行詳細(xì)介紹。請參見圖7,為本發(fā)明的程序分析方法的第一實(shí)施例的流程圖;所述方法包括 S101,客戶端記錄程序運(yùn)行的非預(yù)期代碼分支,并將記錄結(jié)果上報(bào)至服務(wù)器端。具體實(shí)現(xiàn)中,所述客戶端為連接于服務(wù)器端的所有客戶端。所述SlOl中,所述客戶端可采用位段的方式記錄程序運(yùn)行的非預(yù)期代碼分支,具體請一并參見圖2。預(yù)先將程序的所有非預(yù)期代碼分支與位段中的位一一對應(yīng),比如某程序的第一段非預(yù)期代碼分支與位段中的第一位相對應(yīng),該程序的第二段非預(yù)期代碼分支與位段中的第二位相對應(yīng),該程序的第N段非預(yù)期代碼分支與位段中的第N位相對應(yīng);當(dāng)程序運(yùn)行了第一段非預(yù)期代碼分支,所述客戶端執(zhí)行所述S101,將位段中的第一位進(jìn)行標(biāo)記;當(dāng)程序運(yùn)行了第四段非預(yù)期 代碼分支,所述客戶端執(zhí)行所述S101,將位段中的第四位進(jìn)行標(biāo)記(請參見圖2)。所述SlOl中,所述客戶端采用按位標(biāo)記方式,將程序運(yùn)行的所有非預(yù)期代碼分支均進(jìn)行標(biāo)記,最后在程序運(yùn)行結(jié)束后,將位段上報(bào)至所述服務(wù)器端。需要說明的是,所述客戶端采用位段方式記錄時(shí),程序與位段可一一對應(yīng),也可采用一個(gè)位段對應(yīng)需要分析的所有程序;另外,程序運(yùn)行結(jié)束可以指程序運(yùn)行完成,也可以指程序出現(xiàn)異常無法運(yùn)行而結(jié)束??梢岳斫獾氖?,所述SlOl采用位段的方式記錄程序運(yùn)行非預(yù)期代碼分支僅為舉例,其他情況,比如若程序運(yùn)行過程中出現(xiàn)的非預(yù)期代碼分支較少,則可所述SlOl直接對非預(yù)期代碼分支進(jìn)行記錄,然后匯總記錄結(jié)果上報(bào)至所述服務(wù)器端;再如所述SlOl可采用位置信息記錄非預(yù)期代碼分支,如非預(yù)期代碼分支位于程序的多少行,等等,然后匯總記錄結(jié)果上報(bào)至所述服務(wù)器端;上述其他情況下可類似分析,在此不贅述。S102,所述服務(wù)器端根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,解析所述記錄結(jié)果,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。所述S102中,所述服務(wù)器端接收所述客戶端執(zhí)行所述SlOl后上報(bào)的記錄結(jié)果,以位段為例,所述服務(wù)器端首先接收所述客戶端上報(bào)的位段,并解析所述位段中各個(gè)標(biāo)記位,確定每個(gè)標(biāo)記位對應(yīng)的程序運(yùn)行的非預(yù)期代碼分支,然后根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。具體實(shí)現(xiàn)中,每一個(gè)非預(yù)期代碼分支均對應(yīng)相應(yīng)的故障,比如硬盤寫程序的預(yù)期分支為硬盤寫操作成功;該程序的非預(yù)期代碼分支為硬盤寫操作失?。划?dāng)程序運(yùn)行了硬盤寫程序的非預(yù)期代碼分支,則表明該程序運(yùn)行過程中出現(xiàn)了 “硬盤寫操作失敗”的故障,所述服務(wù)器端執(zhí)行所述S102,解析出該非預(yù)期代碼分支后,即根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,確認(rèn)所述硬盤寫操作程序運(yùn)行過程中出現(xiàn)了“硬盤寫操作失敗”的故障。需要說明的是,非預(yù)期代碼分支與故障的對應(yīng)關(guān)系在程序編寫過程中預(yù)先設(shè)定,每一個(gè)非預(yù)期代碼分支的出現(xiàn)即表示程序運(yùn)行過程中出現(xiàn)了相應(yīng)的故障,所述服務(wù)器端在步驟S102中,通過解析客戶端上報(bào)的位段,獲得所述程序運(yùn)行過程中出現(xiàn)的整體故障情況(即整個(gè)細(xì)節(jié))。本發(fā)明實(shí)施例可對程序運(yùn)行過程中出現(xiàn)的故障情況進(jìn)行記錄、分析和處理,程序分析過程簡單、高效,且有利于程序的改進(jìn)。請參見圖8,為本發(fā)明的程序分析方法的第二實(shí)施例的流程圖;所述方法包括 S201,當(dāng)程序運(yùn)行任一非預(yù)期代碼分支時(shí),客戶端在位段中將所述非預(yù)期代碼分支對應(yīng)的位進(jìn)行標(biāo)記。具體實(shí)現(xiàn)中,所述S201可采用位段的方式記錄程序運(yùn)行的非預(yù)期代碼分支,所述位段包括至少一個(gè)位,其中每一位對應(yīng)于所述程序的唯一一個(gè)非預(yù)期代碼分支,具體請一并參見圖2。預(yù)先將程序的所有非預(yù)期代碼分支與位段中的位一一對應(yīng),比如某程序的第一段非預(yù)期代碼分支與位段中的第一位相對應(yīng),該程序的第二段非預(yù)期代碼分支與位段中的第二位相對應(yīng),該程序的第N段非預(yù)期代碼分支與位段中的第N位相對應(yīng);當(dāng)程序運(yùn)行了第一段非預(yù)期代碼分支,所述S201即將位段中的第一位進(jìn)行標(biāo)記;當(dāng)程序運(yùn)行了第四段非預(yù)期代碼分支,所述S201即將位段中的第四位進(jìn)行標(biāo)記(請參見圖2)。所述S201采用按位標(biāo)記方式,將程序運(yùn)行的所有非預(yù)期代碼分支均進(jìn)行標(biāo)記。需要說明的是,所述S201采用位段方式記錄時(shí),程序與位段可一一對應(yīng),也可采用一個(gè)位段對應(yīng)需要分析的所有程序。S202,客戶端將標(biāo)記有所述程序運(yùn)行的所有非預(yù)期代碼分支的所述位段上報(bào)至服 務(wù)器端。所述S202當(dāng)所述程序運(yùn)行結(jié)束后,將所述S201記標(biāo)記后的位段上報(bào)至服務(wù)器端,此處,程序運(yùn)行結(jié)束可以指程序運(yùn)行完成,也可以指程序出現(xiàn)異常無法運(yùn)行而結(jié)束??梢岳斫獾氖?,所述S201采用位段的方式記錄程序運(yùn)行非預(yù)期代碼分支僅為舉例,其他情況,比如若程序運(yùn)行過程中出現(xiàn)的非預(yù)期代碼分支較少,所述S201可直接對非預(yù)期代碼分支進(jìn)行記錄,然后匯總記錄結(jié)果由所述S202上報(bào)至所述服務(wù)器端;再如所述S201可采用位置信息記錄非預(yù)期代碼分支,如非預(yù)期代碼分支位于程序的多少行,等等,然后匯總記錄結(jié)果由所述S202上報(bào)至所述服務(wù)器端;上述其他情況下可類似分析,在此不贅述。本實(shí)施例中,所述S201-S202為上一實(shí)施例中的SlOl的具體細(xì)化步驟。S203,服務(wù)器端接收并解析所述客戶端上報(bào)的位段,確定所述位段中各個(gè)標(biāo)記位對應(yīng)的非預(yù)期代碼分支。如前述,由于程序的所有非預(yù)期代碼分支與位段中的位一一對應(yīng),所述S203接收所述S202上報(bào)的位段后,解析所述位段,確定所述位段中各個(gè)標(biāo)記位對應(yīng)的非預(yù)期代碼分支。S204,所述服務(wù)器端根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,獲得各個(gè)非預(yù)期代碼分支對應(yīng)的故障。具體實(shí)現(xiàn)中,每一個(gè)非預(yù)期代碼分支均對應(yīng)相應(yīng)的故障,比如硬盤寫程序的預(yù)期分支為硬盤寫操作成功;該程序的非預(yù)期代碼分支為硬盤寫操作失敗;當(dāng)程序運(yùn)行了硬盤寫程序的非預(yù)期代碼分支,則表明該程序運(yùn)行過程中出現(xiàn)了 “硬盤寫操作失敗”的故障,所述S204根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,確認(rèn)所述硬盤寫操作程序運(yùn)行過程中出現(xiàn)了 “硬盤寫操作失敗”的故障。S205,所述服務(wù)器端根據(jù)各個(gè)非預(yù)期代碼分支對應(yīng)的故障,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。非預(yù)期代碼分支與故障的對應(yīng)關(guān)系在程序編寫過程中預(yù)先設(shè)定,每一個(gè)非預(yù)期代碼分支的出現(xiàn)即表示程序運(yùn)行過程中出現(xiàn)了相應(yīng)的故障,所述S205根據(jù)所述S204得到的各個(gè)非預(yù)期代碼分支對應(yīng)的故障,可確定所述程序運(yùn)行過程中出現(xiàn)的整體故障情況(即整個(gè)細(xì)節(jié))。本實(shí)施例中,所述S203-S205為上一實(shí)施例S102的具體細(xì)化步驟。S206,所述服務(wù)器端根據(jù)所述程序運(yùn)行過程中出現(xiàn)的故障情況,生成所述程序的
預(yù)警變化信息。具體實(shí)現(xiàn)中,所述預(yù)警變化信息可以為所述程序運(yùn)行過程中的各個(gè)故障出現(xiàn)次數(shù)的排行。由于各個(gè)客戶端均向服務(wù)器端上報(bào)了記錄結(jié)果,所述S206通過故障分析得到各個(gè)客戶端的程序運(yùn)行過程中出現(xiàn)的故障情況,所述S206根據(jù)所述服務(wù)器端分析得到的程序運(yùn)行過程中出現(xiàn)的故障情況,生成所述程序的預(yù)警變化信息,其中,生成預(yù)警變化信息的具體過程為所述S206統(tǒng)計(jì)各個(gè)客戶端運(yùn)行的相同版本的相同程序出現(xiàn)的各個(gè)故障的排行,以及統(tǒng)計(jì)各個(gè)客戶端運(yùn)行的不同版本的相同程序出現(xiàn)的各個(gè)故障的排行。S207,所述服務(wù)器端輸出所述預(yù)警變化信息。 所述S207可采用曲線或報(bào)表的形式輸出所述S206生成的預(yù)警變化信息(即故障排行),方便程序開發(fā)者能夠即時(shí)改進(jìn)程序,即時(shí)調(diào)整程序的發(fā)布策略。本發(fā)明實(shí)施例可對程序運(yùn)行過程中出現(xiàn)的故障情況進(jìn)行記錄、分析和處理,并可根據(jù)程序運(yùn)行過程中出現(xiàn)的故障情況生成預(yù)警變化信息,便于程序開發(fā)者即時(shí)改進(jìn)程序,即時(shí)調(diào)整程序的發(fā)布策略。通過上述實(shí)施例的描述,本發(fā)明實(shí)施例的客戶端記錄程序運(yùn)行的非預(yù)期代碼分支,并將記錄結(jié)果上報(bào)至服務(wù)器端,由服務(wù)器端根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,獲得程序運(yùn)行過程中出現(xiàn)的故障情況,這種全流程故障記錄、匯總上報(bào)的分析方式,簡單、高效,有利于掌握程序的整體工作狀態(tài)和工作過程中出現(xiàn)的故障(細(xì)節(jié)),便于程序開發(fā)者即時(shí)改進(jìn)程序,即時(shí)調(diào)整程序的發(fā)布策略;另外,本發(fā)明實(shí)施例的服務(wù)器端根據(jù)分析得到的程序運(yùn)行過程中出現(xiàn)的故障情況,生成預(yù)警變化信息并輸出,可使程序開發(fā)者能夠即時(shí)改進(jìn)程序,提高用戶對程序的使用體驗(yàn)。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory, ROM)或隨機(jī)存儲(chǔ)記憶體(Random AccessMemory, RAM)等。以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。
權(quán)利要求
1.一種程序分析方法,其特征在于,包括 客戶端記錄程序運(yùn)行的非預(yù)期代碼分支,并將記錄結(jié)果上報(bào)至服務(wù)器端; 所述服務(wù)器端根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,解析所述記錄結(jié)果,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。
2.如權(quán)利要求I所述的方法,其特征在于,所述客戶端記錄程序運(yùn)行的非預(yù)期代碼分支,并將記錄結(jié)果上報(bào)至服務(wù)器端,包括 當(dāng)程序運(yùn)行任一非預(yù)期代碼分支時(shí),客戶端在位段中將所述非預(yù)期代碼分支對應(yīng)的位進(jìn)行標(biāo)記,所述位段包括至少一個(gè)位,其中每一位對應(yīng)于所述程序的唯一一個(gè)非預(yù)期代碼分支; 當(dāng)所述程序運(yùn)行結(jié)束后,所述客戶端將所述位段上報(bào)至服務(wù)器端。
3.如權(quán)利要求2所述的方法,其特征在于,所述服務(wù)器端根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,解析所述記錄結(jié)果,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況,包括 服務(wù)器端接收并解析所述客戶端上報(bào)的位段,確定所述位段中各個(gè)標(biāo)記位對應(yīng)的非預(yù)期代碼分支; 所述服務(wù)器端根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,獲得各個(gè)非預(yù)期代碼分支對應(yīng)的故障; 所述服務(wù)器端根據(jù)各個(gè)非預(yù)期代碼分支對應(yīng)的故障,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。
4.如權(quán)利要求1-3任一項(xiàng)所述的方法,其特征在于,所述服務(wù)器端根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,解析所述記錄結(jié)果,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況之后,還包括 所述服務(wù)器端根據(jù)所述程序運(yùn)行過程中出現(xiàn)的故障情況,生成所述程序的預(yù)警變化信息; 所述服務(wù)器端輸出所述預(yù)警變化信息。
5.一種客戶端,其特征在于,包括 記錄單元,用于記錄程序運(yùn)行的非預(yù)期代碼分支; 上報(bào)單元,用于將所述記錄單元的記錄結(jié)果上報(bào)至服務(wù)器端。
6.如權(quán)利要求5所述的客戶端,其特征在于 所述記錄單元用于當(dāng)程序運(yùn)行任一非預(yù)期代碼分支時(shí),在位段中將所述非預(yù)期代碼分支對應(yīng)的位進(jìn)行標(biāo)記,所述位段包括至少一個(gè)位,其中每一位對應(yīng)于所述程序的唯一一個(gè)非預(yù)期代碼分支; 所述上報(bào)單元當(dāng)所述程序運(yùn)行結(jié)束后,將所述記錄單元標(biāo)記后的位段上報(bào)至服務(wù)器端。
7.一種服務(wù)器端,其特征在于,包括 接收模塊,用于接收客戶端上報(bào)的記錄結(jié)果; 故障分析模塊,用于根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,解析所述接收模塊接收的記錄結(jié)果,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。
8.如權(quán)利要求7所述的服務(wù)器端,其特征在于,所述接收模塊接收客戶端上報(bào)的位段; 所述故障分析模塊包括解析單元,用于解析所述接收模塊接收的位段,確定所述位段中各個(gè)標(biāo)記位對應(yīng)的非預(yù)期代碼分支; 故障確定單元,用于根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,獲得所述解析單元得到的各個(gè)非預(yù)期代碼分支對應(yīng)的故障; 分析單元,用于根據(jù)所述故障確定單元得到的各個(gè)非預(yù)期代碼分支對應(yīng)的故障,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。
9.如權(quán)利要求8所述的服務(wù)器端,其特征在于,還包括 預(yù)警生成模塊,用于根據(jù)所述程序運(yùn)行過程中出現(xiàn)的故障情況,生成所述程序的預(yù)警變化信息; 輸出模塊,用于輸出所述預(yù)警生成模塊生成的預(yù)警變化信息。
10.一種程序分析系統(tǒng),包括服務(wù)器端及至少一個(gè)客戶端,其特征在于 所述客戶端,用于記錄程序運(yùn)行的非預(yù)期代碼分支,并將記錄結(jié)果上報(bào)至所述服務(wù)器端; 所述服務(wù)器端,用于接收所述客戶端上報(bào)的記錄結(jié)果,并根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,解析所述記錄結(jié)果,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。
全文摘要
本發(fā)明實(shí)施例公開了一種程序分析方法,包括客戶端記錄程序運(yùn)行的非預(yù)期代碼分支,并將記錄結(jié)果上報(bào)至服務(wù)器端;所述服務(wù)器端根據(jù)預(yù)設(shè)的非預(yù)期代碼分支與故障的對應(yīng)關(guān)系,解析所述記錄結(jié)果,獲得所述程序運(yùn)行過程中出現(xiàn)的故障情況。本發(fā)明實(shí)施例還公開了一種客戶端、服務(wù)器端及程序分析系統(tǒng)。采用本發(fā)明,可對程序運(yùn)行過程中出現(xiàn)的故障情況進(jìn)行記錄、分析和處理,程序分析過程簡單、高效,且有利于程序的改進(jìn)。
文檔編號G06F11/36GK102750218SQ201110101820
公開日2012年10月24日 申請日期2011年4月22日 優(yōu)先權(quán)日2011年4月22日
發(fā)明者華有為 申請人:騰訊科技(深圳)有限公司