1.一種軟件異常檢測方法,其特征在于,所述方法包括:
在軟件運行正常時,若檢測到終端當(dāng)前處于資源空閑狀態(tài),則基于至少兩個檢測算法,對所述軟件包含的全部文件進(jìn)行異常檢測;
在所述軟件發(fā)生異常時,確定所述軟件發(fā)生異常時的崩潰進(jìn)程,獲取所述崩潰進(jìn)程的調(diào)用棧,所述調(diào)用棧記錄了所述崩潰進(jìn)程調(diào)用的文件,若所述調(diào)用的文件中存在屬性信息錯誤的文件,則確定所述崩潰進(jìn)程調(diào)用的文件中存在異常文件,基于所述至少兩個檢測算法,對所述軟件包含的全部文件進(jìn)行異常檢測。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述基于至少兩個檢測算法,對所述軟件包含的全部文件進(jìn)行異常檢測,包括:
采用第一檢測算法,在所述全部文件中確定不存在異常的第一文件;
采用檢測準(zhǔn)確度大于所述第一檢測算法的第二檢測算法,在第二文件中確定存在異常的文件,所述第二文件為所述全部文件中除所述第一文件之外的其他文件;
將所述存在異常的文件確定為所述異常文件。
3.根據(jù)權(quán)利要求要求1所述的方法,其特征在于,所述方法還包括:
確定所述軟件發(fā)生異常時的崩潰進(jìn)程之后,若未檢測到所述軟件的崩潰進(jìn)程調(diào)用的文件中存在異常文件,則上報異常信息。
4.根據(jù)權(quán)利要求1至3中任一權(quán)利要求所述的方法,其特征在于,所述方法還包括:
若在所述軟件運行正常時檢測到所述全部文件中存在異常文件,且所述異常文件未導(dǎo)致所述軟件發(fā)生異常,則在對所述軟件中每一個文件進(jìn)行異常檢測結(jié)束時,采用第一系統(tǒng)優(yōu)先級,對所述異常文件進(jìn)行修復(fù);
若在所述軟件發(fā)生異常時檢測到所述全部文件中存在異常文件,則在對所述軟件中每一個文件進(jìn)行異常檢測結(jié)束時,采用第二系統(tǒng)優(yōu)先級,對所述異常文件進(jìn)行修復(fù);
其中,所述第一系統(tǒng)優(yōu)先級的級別低于所述第二系統(tǒng)優(yōu)先級。
5.根據(jù)權(quán)利要求1至3中任一權(quán)利要求所述的方法,其特征在于,所述方法還包括:
在確定所述全部文件中的異常文件后,獲取所述異常文件的屬性信息;
根據(jù)所述屬性信息,確定所述異常文件的異常原因;
對所述終端的內(nèi)存以及硬盤進(jìn)行故障檢測,得到檢測結(jié)果;
將所述異常原因和所述檢測結(jié)果保存在本地。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述對所述異常文件進(jìn)行修復(fù),包括:
判斷所述異常文件的屬性信息中的當(dāng)前版本信息與所述軟件的當(dāng)前軟件版本信息是否一致;
若所述異常文件的當(dāng)前版本信息與所述軟件的當(dāng)前軟件版本信息一致,則在本地備份的所述軟件的安裝包文件中,獲取與所述異常文件同名的第一替換文件,以所述第一替換文件替換所述異常文件;
若所述異常文件的當(dāng)前版本信息與所述軟件的當(dāng)前軟件版本信息不一致,則從服務(wù)器獲取與所述異常文件同名且版本最新的第二替換文件,以所述第二替換文件替換所述異常文件。
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述對所述異常文件進(jìn)行修復(fù),包括:
若對所述異常文件進(jìn)行修復(fù)失敗,則在檢測到所述終端執(zhí)行重啟操作后,在重啟過程中再次執(zhí)行對所述異常文件進(jìn)行修復(fù)的過程。
8.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述方法還包括:
檢測所述軟件或所述軟件中包含的任一文件是否存在可更新版本;
若所述軟件存在可更新版本,則從服務(wù)器獲取所述可更新版本的軟件安裝包,并根據(jù)所述軟件安裝包對所述軟件進(jìn)行升級;
若所述任一文件存在可更新版本,則從服務(wù)器獲取所述可更新版本的文件安裝包,并根據(jù)所述文件安裝包對所述任一文件進(jìn)行升級。
9.根據(jù)權(quán)利要求1至3中任一權(quán)利要求所述的方法,其特征在于,所述方法還包括:
當(dāng)所述軟件運行正常時,在對所述軟件包含的全部文件進(jìn)行異常檢測的過程中,若尚未發(fā)現(xiàn)異常文件且所述終端由所述資源空閑狀態(tài)轉(zhuǎn)變?yōu)橘Y源繁忙狀態(tài),則終止進(jìn)行異常檢測;
當(dāng)所述終端再次處于所述資源空閑狀態(tài)時,繼續(xù)對所述全部文件中未被檢測的文件進(jìn)行異常檢測。
10.一種軟件異常檢測裝置,其特征在于,所述裝置包括:
檢測模塊,用于在軟件運行正常時,若檢測到終端當(dāng)前處于資源空閑狀態(tài),則基于至少兩個檢測算法,對所述軟件全部文件進(jìn)行異常檢測;
第一確定模塊,用于在所述軟件發(fā)生異常時,確定所述軟件發(fā)生異常時的崩潰進(jìn)程;
第一獲取模塊,用于獲取所述崩潰進(jìn)程的調(diào)用棧,所述調(diào)用棧記錄了所述崩潰進(jìn)程調(diào)用的文件;
第二確定模塊,用于在所述調(diào)用的文件中存在屬性信息錯誤的文件時,確定所述崩潰進(jìn)程調(diào)用的文件中存在異常文件;
所述檢測模塊,還用于在確定所述崩潰進(jìn)程調(diào)用的文件中存在異常文件時,基于所述至少兩個檢測算法,對所述軟件全部文件進(jìn)行異常檢測。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述檢測模塊,基于至少兩個檢測算法,對所述軟件全部文件進(jìn)行異常檢測時,用于采用第一檢測算法,在所述全部文件中確定不存在異常的第一文件;采用檢測準(zhǔn)確度大于所述第一檢測算法的第二檢測算法,在第二文件中確定存在異常的文件,所述第二文件為所述全部文件中除所述第一文件之外的其他文件;將所述存在異常的文件確定為所述異常文件。
12.根據(jù)權(quán)利要求要求10所述的裝置,其特征在于,所述裝置還包括:
上報模塊,用于確定所述軟件發(fā)生異常時的崩潰進(jìn)程之后,若未檢測到所述軟件的崩潰進(jìn)程調(diào)用的文件中存在異常文件,則上報異常信息。
13.根據(jù)權(quán)利要求10至12中任一權(quán)利要求所述的裝置,其特征在于,所述裝置還包括:
修復(fù)模塊,用于若在所述軟件運行正常時檢測到所述全部文件中存在異常文件,且所述異常文件未導(dǎo)致所述軟件發(fā)生異常,則在對所述軟件中每一個文件進(jìn)行異常檢測結(jié)束時,采用第一系統(tǒng)優(yōu)先級,對所述異常文件進(jìn)行修復(fù);
所述修復(fù)模塊,還用于若在所述軟件發(fā)生異常時檢測到所述全部文件中存在異常文件,則在對所述軟件中每一個文件進(jìn)行異常檢測結(jié)束時,采用第二系統(tǒng)優(yōu)先級,對所述異常文件進(jìn)行修復(fù);
其中,所述第一系統(tǒng)優(yōu)先級的級別低于所述第二系統(tǒng)優(yōu)先級。
14.根據(jù)權(quán)利要求10至12中任一權(quán)利要求所述的裝置,其特征在于,所述裝置還包括:
第二獲取模塊,用于在確定所述全部文件中的異常文件后,獲取所述異常文件的屬性信息;
第三確定模塊,用于根據(jù)所述屬性信息,確定所述異常文件的異常原因;
所述檢測模塊,還用于對所述終端的內(nèi)存以及硬盤進(jìn)行故障檢測,得到檢測結(jié)果;
保存模塊,用于將所述異常原因和所述檢測結(jié)果保存在本地。
15.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述修復(fù)模塊,用于判斷所述異常文件的屬性信息中的當(dāng)前版本信息與所述軟件的當(dāng)前軟件版本信息是否一致;若所述異常文件的當(dāng)前版本信息與所述軟件的當(dāng)前軟件版本信息一致,則在本地備份的所述軟件的安裝包文件中,獲取與所述異常文件同名的第一替換文件,以所述第一替換文件替換所述異常文件;若所述異常文件的當(dāng)前版本信息與所述軟件的當(dāng)前軟件版本信息不一致,則從服務(wù)器獲取與所述異常文件同名且版本最新的第二替換文件,以所述第二替換文件替換所述異常文件。
16.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述修復(fù)模塊,用于若對所述異常文件進(jìn)行修復(fù)失敗,則在檢測到所述終端執(zhí)行重啟操作后,在重啟過程中再次執(zhí)行對所述異常文件進(jìn)行修復(fù)的過程。
17.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述裝置還包括:
升級模塊,用于檢測所述軟件或所述軟件中包含的任一文件是否存在可更新版本;若所述軟件存在可更新版本,則從服務(wù)器獲取所述可更新版本的軟件安裝包,并根據(jù)所述軟件安裝包對所述軟件進(jìn)行升級;
所述升級模塊,還用于若所述任一文件存在可更新版本,則從服務(wù)器獲取所述可更新版本的文件安裝包,并根據(jù)所述文件安裝包對所述任一文件進(jìn)行升級。
18.根據(jù)權(quán)利要求10至12中任一權(quán)利要求所述的裝置,其特征在于,所述檢測模塊,還用于當(dāng)所述軟件運行正常時,在對所述軟件全部文件進(jìn)行異常檢測的過程中,若尚未發(fā)現(xiàn)異常文件且所述終端由所述資源空閑狀態(tài)轉(zhuǎn)變?yōu)橘Y源繁忙狀態(tài),則終止進(jìn)行異常檢測;當(dāng)所述終端再次處于所述資源空閑狀態(tài)時,繼續(xù)對所述全部文件中未被檢測的文件進(jìn)行異常檢測。