本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種目標(biāo)軟件的崩潰處理方法及裝置。
背景技術(shù):
在軟件運(yùn)行的過(guò)程中常常會(huì)遇到崩潰的狀況。通常情況下,在編寫軟件時(shí),可以在軟件自身設(shè)置崩潰處理過(guò)程,使軟件自身具有崩潰處理能力,當(dāng)軟件發(fā)生崩潰時(shí),調(diào)用系統(tǒng)預(yù)置的應(yīng)用程序編程接口(Application Programming Interface,API)函數(shù)來(lái)捕獲軟件崩潰事件,并收集崩潰信息進(jìn)行分析處理。然而,采用這種軟件自身進(jìn)行崩潰處理的方式,其僅能夠解決軟件自身發(fā)生的崩潰,不能對(duì)其他軟件的崩潰進(jìn)行處理。并且,現(xiàn)有技術(shù)中更多的軟件其本身并沒(méi)有處理崩潰的功能。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的目標(biāo)軟件的崩潰處理方法及裝置。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種目標(biāo)軟件的崩潰處理方法,包括:
加載動(dòng)態(tài)鏈接模塊至所述目標(biāo)軟件;
在所述目標(biāo)軟件發(fā)生崩潰時(shí),通過(guò)所述動(dòng)態(tài)鏈接模塊調(diào)用崩潰處理函數(shù),收集所述目標(biāo)軟件的崩潰信息;
發(fā)送所述崩潰信息至服務(wù)器。
可選的,所述通過(guò)所述動(dòng)態(tài)鏈接模塊調(diào)用崩潰處理函數(shù),收集所述目標(biāo)軟件的崩潰信息,具體包括:
利用所述動(dòng)態(tài)鏈接模塊調(diào)用所述崩潰處理函數(shù);
根據(jù)所述崩潰處理函數(shù),注冊(cè)回調(diào)函數(shù);
在所述回調(diào)函數(shù)中收集所述崩潰信息。
可選的,在所述發(fā)送所述崩潰信息至服務(wù)器之后,所述方法還包括:
接收所述服務(wù)器對(duì)所述崩潰信息分析得到的崩潰分析結(jié)果;
展現(xiàn)所述崩潰分析結(jié)果。
可選的,在所述動(dòng)態(tài)鏈接模塊調(diào)用崩潰處理函數(shù)之后,所述方法還包括:
收集所述目標(biāo)軟件當(dāng)前所處系統(tǒng)下的環(huán)境信息;
發(fā)送所述環(huán)境信息至所述服務(wù)器,以使所述服務(wù)器能夠?qū)λ霏h(huán)境信息進(jìn)行分析。
可選的,所述動(dòng)態(tài)鏈接模塊具體為輸入法模塊或嵌入式安全模塊。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種目標(biāo)軟件的崩潰處理裝置,包括:
加載模塊,用于加載動(dòng)態(tài)鏈接模塊至所述目標(biāo)軟件;
第一信息收集模塊,用于在所述目標(biāo)軟件發(fā)生崩潰時(shí),通過(guò)所述動(dòng)態(tài)鏈接模塊調(diào)用崩潰處理函數(shù),收集所述目標(biāo)軟件的崩潰信息;
第一信息發(fā)送模塊,用于發(fā)送所述崩潰信息至服務(wù)器。
可選的,所述第一信息收集模塊具體包括:
調(diào)用單元,用于利用所述動(dòng)態(tài)鏈接模塊調(diào)用所述崩潰處理函數(shù);
注冊(cè)單元,用于根據(jù)所述崩潰處理函數(shù),注冊(cè)回調(diào)函數(shù);
收集單元,用于在所述回調(diào)函數(shù)中收集所述崩潰信息。
可選的,所述裝置還包括:
接收模塊,用于接收所述服務(wù)器對(duì)所述崩潰信息分析得到的崩潰分析結(jié)果;
展現(xiàn)模塊,用于展現(xiàn)所述崩潰分析結(jié)果。
可選的,所述裝置還包括:
第二信息收集模塊,用于收集所述目標(biāo)軟件當(dāng)前所處系統(tǒng)下的環(huán)境信息;
第二信息發(fā)送模塊,發(fā)送所述環(huán)境信息至所述服務(wù)器。
可選的,所述動(dòng)態(tài)鏈接模塊具體為輸入法模塊或嵌入式安全模塊。
本發(fā)明的技術(shù)方案通過(guò)加載在目標(biāo)軟件中的動(dòng)態(tài)鏈接模塊,當(dāng)目標(biāo)軟件發(fā)生崩潰時(shí),利用動(dòng)態(tài)鏈接模塊來(lái)實(shí)現(xiàn)對(duì)崩潰信息的收集,并將崩潰信息發(fā)送給服務(wù)器進(jìn)行分析,從而,實(shí)現(xiàn)了對(duì)自身不具備崩潰處理能力的軟件的崩潰處理,通過(guò)在崩潰時(shí)對(duì)目標(biāo)軟件的崩潰處理,能夠幫助關(guān)心目標(biāo)軟件崩潰的 人掌握目標(biāo)軟件運(yùn)行的穩(wěn)定性情況,有助于后續(xù)改進(jìn)目標(biāo)軟件所存在的問(wèn)題,提高目標(biāo)軟件的質(zhì)量。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明一個(gè)實(shí)施例的目標(biāo)軟件的崩潰處理方法的流程圖;
圖2為本發(fā)明一個(gè)實(shí)施例的目標(biāo)軟件的崩潰處理裝置的裝置示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參閱圖1,其為本發(fā)明一個(gè)實(shí)施例的目標(biāo)軟件的崩潰處理方法的流程圖。在本實(shí)施例中,目標(biāo)軟件的崩潰處理方法應(yīng)用于運(yùn)行目標(biāo)軟件的客戶端設(shè)備中,該方法包括如下步驟:
步驟101:加載動(dòng)態(tài)鏈接模塊至目標(biāo)軟件。
具體來(lái)講,動(dòng)態(tài)鏈接模塊是一個(gè)動(dòng)態(tài)鏈接庫(kù)文件,也是一個(gè)模塊文件,在使用時(shí),動(dòng)態(tài)鏈接模塊需要加載到目標(biāo)軟件中,動(dòng)態(tài)鏈接模塊本身并不具有獨(dú)立進(jìn)程。其中,動(dòng)態(tài)鏈接模塊可以為輸入法模塊,也可以為嵌入式安全模塊。通常情況下,在目標(biāo)軟件中加載輸入法模塊后,利用輸入法模塊能夠輸入信息到目標(biāo)軟件中,而,在目標(biāo)軟件中加載嵌入式安全模塊后,嵌入式安全模塊能夠?qū)δ繕?biāo)軟件的安全進(jìn)行監(jiān)控。
步驟102:在目標(biāo)軟件發(fā)生崩潰時(shí),通過(guò)動(dòng)態(tài)鏈接模塊調(diào)用崩潰處理函數(shù),收集目標(biāo)軟件的崩潰信息。
目標(biāo)軟件自動(dòng)加載動(dòng)態(tài)鏈接模塊,且,該動(dòng)態(tài)鏈接模塊被成功加載后,動(dòng)態(tài)鏈接模塊不僅能夠?qū)崿F(xiàn)其原有功能,另外,通過(guò)動(dòng)態(tài)鏈接模塊還對(duì)目標(biāo)軟件 的崩潰情況進(jìn)行監(jiān)控。具體的,在目標(biāo)軟件發(fā)生崩潰時(shí),將生成一崩潰通知,動(dòng)態(tài)鏈接模塊接收崩潰通知后,調(diào)用崩潰處理函數(shù),即SetUnhandledExceptionFilter,根據(jù)崩潰處理函數(shù)可以注冊(cè)回調(diào)函數(shù),在回調(diào)函數(shù)中收集崩潰信息,從而,動(dòng)態(tài)鏈接模塊完成對(duì)崩潰信息的收集。
步驟103:發(fā)送崩潰信息至服務(wù)器。
動(dòng)態(tài)鏈接模塊收集到崩潰信息后,先將崩潰信息進(jìn)行壓縮,再通過(guò)POST的方式將崩潰信息發(fā)送至服務(wù)器,具體的,動(dòng)態(tài)鏈接模塊通過(guò)網(wǎng)絡(luò)請(qǐng)求上報(bào)至服務(wù)器,從而對(duì)崩潰信息進(jìn)行發(fā)送。
另一方面,服務(wù)器在接收到崩潰信息后,根據(jù)崩潰信息進(jìn)行崩潰分析,在崩潰分析時(shí),通常包含堆棧分析和用戶分析,堆棧分析用于確定崩潰發(fā)生在哪一個(gè)模塊,以及導(dǎo)致這個(gè)模塊崩潰的原因,用戶分析用于確定曾經(jīng)是否發(fā)生過(guò)相同的崩潰、是否發(fā)生過(guò)其他崩潰,以及崩潰進(jìn)程的信息情況。服務(wù)器對(duì)崩潰信息分析后,得到崩潰分析結(jié)果,服務(wù)器可以將該崩潰分析結(jié)果發(fā)送給所述客戶端,除此之外,服務(wù)器也可以將該崩潰分析結(jié)果發(fā)送給目標(biāo)軟件的廠商,另外,服務(wù)器還可以將該崩潰分析結(jié)果同時(shí)發(fā)送給客戶端和目標(biāo)軟件的廠商。其中,崩潰分析結(jié)果可以按照匯總、聚合或分類的方法以HTML(Hyper Text Markup Language,超級(jí)文本標(biāo)記語(yǔ)言)網(wǎng)頁(yè)的形式生成崩潰報(bào)告,崩潰報(bào)告中可以包括每日崩潰堆棧情況和/或?qū)崟r(shí)崩潰堆棧情況和/或用戶崩潰率和/或模塊崩潰率和/或堆棧崩潰率。
進(jìn)一步,在發(fā)送崩潰信息至服務(wù)器之后,所述方法還包括:
接收服務(wù)器對(duì)崩潰信息分析得到的崩潰分析結(jié)果;
展現(xiàn)所述崩潰分析結(jié)果。
具體來(lái)講,當(dāng)服務(wù)器以崩潰報(bào)告的形式將崩潰分析結(jié)果發(fā)送至客戶端,客戶端接收來(lái)自服務(wù)器的崩潰報(bào)告,并通過(guò)目標(biāo)軟件將該崩潰報(bào)告展現(xiàn)給使用該客戶端的普通用戶,以使普通用戶了解到目標(biāo)軟件的崩潰情況。其中,崩潰分析報(bào)告還可以通過(guò)網(wǎng)頁(yè)的形式進(jìn)行實(shí)現(xiàn),服務(wù)器將與崩潰分析報(bào)告相對(duì)應(yīng)的網(wǎng)頁(yè)地址發(fā)送給客戶端,以進(jìn)行展現(xiàn)。同時(shí),服務(wù)器還可以將該網(wǎng)頁(yè)地址發(fā)送給關(guān)心目標(biāo)軟件崩潰的目標(biāo)軟件的廠商,使目標(biāo)軟件的廠商也能夠了解到目標(biāo)軟件的崩潰情況,掌握目標(biāo)軟件運(yùn)行的穩(wěn)定性。
本申請(qǐng)利用目標(biāo)軟件中通常會(huì)加載的動(dòng)態(tài)鏈接模塊來(lái)實(shí)現(xiàn)對(duì)崩潰信息的收集,使得自身不具備崩潰處理能力的軟件也能夠完成崩潰處理,從而幫助普通用戶和目標(biāo)軟件的廠商等關(guān)心目標(biāo)軟件崩潰的人掌握目標(biāo)軟件運(yùn)行的穩(wěn)定性情況,有助于后續(xù)改進(jìn)目標(biāo)軟件所存在的問(wèn)題,提高目標(biāo)軟件的質(zhì)量。同時(shí),由于動(dòng)態(tài)鏈接模塊通常是客戶端在運(yùn)行目標(biāo)軟件時(shí)的必備程序,因此,本申請(qǐng)無(wú)需在目標(biāo)軟件所處的客戶端中安裝額外的第三方調(diào)試軟件(如現(xiàn)有的用于崩潰處理的第三方調(diào)試軟件WinDbg,并借助該第三方調(diào)試軟件對(duì)目標(biāo)軟件進(jìn)行崩潰處理),使得對(duì)目標(biāo)軟件的崩潰處理變得簡(jiǎn)單,且容易實(shí)現(xiàn)。
可選的,本申請(qǐng)?jiān)趧?dòng)態(tài)鏈接模塊調(diào)用崩潰處理函數(shù)之后,所述方法還包括:
收集目標(biāo)軟件當(dāng)前所處系統(tǒng)下的環(huán)境信息;
發(fā)送環(huán)境信息至服務(wù)器。
在具體實(shí)施過(guò)程中,動(dòng)態(tài)鏈接模塊在接收到崩潰通知后,還可以收集當(dāng)前所處系統(tǒng)下的環(huán)境信息,例如,系統(tǒng)進(jìn)程信息、客戶端的資源利用情況等等,在收集到環(huán)境信息后,將環(huán)境信息和崩潰信息一同進(jìn)行壓縮,再通過(guò)POST的方式將壓縮后的信息發(fā)送到服務(wù)器,以供服務(wù)器對(duì)崩潰信息和環(huán)境信息進(jìn)行綜合分析。
當(dāng)服務(wù)器接收到的信息中包含環(huán)境信息時(shí),服務(wù)器根據(jù)環(huán)境信息進(jìn)行環(huán)境分析,環(huán)境分析包括收集用戶IP地址,客戶端的內(nèi)存、操作系統(tǒng)版本和當(dāng)前環(huán)境進(jìn)程等等。服務(wù)器在對(duì)環(huán)境信息進(jìn)行分析后,可以將環(huán)境分析的結(jié)果結(jié)合到崩潰分析結(jié)果中,一同以崩潰報(bào)告的形式發(fā)送至客戶端和/或目標(biāo)軟件的廠商。
下面以動(dòng)態(tài)鏈接模塊是輸入法模塊為例,對(duì)本申請(qǐng)的目標(biāo)軟件的崩潰處理方法進(jìn)行詳細(xì)描述。
在目標(biāo)軟件中執(zhí)行切換輸入法操作,當(dāng)切換出與輸入法模塊對(duì)應(yīng)的輸入法后,表明輸入法模塊成功加載到了目標(biāo)軟件的進(jìn)程中。進(jìn)一步,當(dāng)目標(biāo)軟件發(fā)生崩潰事件,生成崩潰通知,輸入法模塊捕獲到崩潰通知后,輸入法模塊調(diào)用崩潰處理函數(shù),利用該崩潰處理函數(shù)可以注冊(cè)回調(diào)函數(shù),在回調(diào)函數(shù)中不僅可以收集崩潰信息,還可以收集可選的環(huán)境信息,進(jìn)而,輸入法模塊將收集到的 崩潰信息和環(huán)境信息壓縮后通過(guò)POST方式發(fā)送至服務(wù)器。服務(wù)器接收到來(lái)自客戶端的輸入法模塊發(fā)送的信息后,對(duì)崩潰信息和環(huán)境信息進(jìn)行分析,并生成崩潰分析報(bào)告。服務(wù)器將與崩潰分析報(bào)告對(duì)應(yīng)的網(wǎng)頁(yè)地址發(fā)送給客戶端和/或目標(biāo)軟件的廠商,以幫助關(guān)心目標(biāo)軟件崩潰的人掌握目標(biāo)軟件運(yùn)行的穩(wěn)定性情況,有助于后續(xù)改進(jìn)目標(biāo)軟件所存在的問(wèn)題,提高目標(biāo)軟件的質(zhì)量。
與上述的方法實(shí)施例相適應(yīng),圖2為本發(fā)明一個(gè)實(shí)施例的目標(biāo)軟件的崩潰處理裝置的裝置示意圖,如圖所示,該裝置包括:
加載模塊201,用于加載動(dòng)態(tài)鏈接模塊至所述目標(biāo)軟件;
第一信息收集模塊202,用于在所述目標(biāo)軟件發(fā)生崩潰時(shí),通過(guò)所述動(dòng)態(tài)鏈接模塊調(diào)用設(shè)置崩潰處理函數(shù),收集所述目標(biāo)軟件的崩潰信息;
第一信息發(fā)送模塊203,用于發(fā)送所述崩潰信息至服務(wù)器。
其中,第一信息收集模塊202可以包括:調(diào)用單元,用于利用所述動(dòng)態(tài)鏈接模塊調(diào)用所述崩潰處理函數(shù);注冊(cè)單元,用于根據(jù)所述崩潰處理函數(shù),注冊(cè)回調(diào)函數(shù);收集單元,用于在所述回調(diào)函數(shù)中收集所述崩潰信息。
其中,上述裝置還可以包括:接收模塊,用于接收所述服務(wù)器對(duì)所述崩潰信息分析得到的崩潰分析結(jié)果;展現(xiàn)模塊,用于展現(xiàn)所述崩潰分析結(jié)果。
其中,上述裝置還可以包括:第二信息收集模塊,用于收集所述目標(biāo)軟件當(dāng)前所處系統(tǒng)下的環(huán)境信息;第二信息發(fā)送模塊,發(fā)送所述環(huán)境信息至所述服務(wù)器。
其中,動(dòng)態(tài)鏈接模塊具體為輸入法模塊或嵌入式安全模塊。
通過(guò)以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的 不同之處。尤其,對(duì)于裝置或系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。以上所描述的裝置及系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
本說(shuō)明書應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處。綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。