本發(fā)明涉及智能終端技術(shù),尤指一種日志處理方法及裝置、設(shè)備。
背景技術(shù):
android是基于java和c/c++編寫而成的操作系統(tǒng),同樣android應(yīng)用也可以使用java和c/c++編寫應(yīng)用代碼,java和c/c++之間通過(guò)jni進(jìn)行溝通,java代碼運(yùn)行在java虛擬機(jī)之上,c/c++代碼編譯成so庫(kù),被java虛擬機(jī)調(diào)用。android應(yīng)用的這種可以使用java和c/c++編寫代碼的屬性,決定了android應(yīng)用會(huì)出現(xiàn)java層的應(yīng)用崩潰和native層的應(yīng)用崩潰(即c/c++代碼出錯(cuò))。一般來(lái)說(shuō),native應(yīng)用崩潰、java應(yīng)用崩潰是由于空指針、引用越界、內(nèi)存泄露等導(dǎo)致。
目前各大手機(jī)廠商都在機(jī)器預(yù)制了當(dāng)系統(tǒng)出現(xiàn)異常時(shí),自動(dòng)上傳異常信息到服務(wù)器供開發(fā)人員分析的模塊。其一般實(shí)現(xiàn)原理是在系統(tǒng)中出現(xiàn)異常時(shí),抓取系統(tǒng)的一些信息,并將這些信息壓縮后通過(guò)網(wǎng)絡(luò)上傳到服務(wù)器上,服務(wù)器端根據(jù)上傳的機(jī)器imei號(hào)定位該機(jī)器具體出現(xiàn)了什么異常。相關(guān)技術(shù)中,服務(wù)器端收到終端上傳的大量應(yīng)用崩潰日志之后,開發(fā)人員需要對(duì)每一條日志進(jìn)行分析,不僅費(fèi)時(shí)耗力,成本高,而且不能及時(shí)準(zhǔn)確的找到終端存在的問(wèn)題,從而無(wú)法及時(shí)完成終端的系統(tǒng)維修,以至于降低了用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述技術(shù)問(wèn)題,本發(fā)明提供了一種日志處理方法及裝置,能夠?qū)⑾嗤驅(qū)е碌谋罎⑷罩具M(jìn)行歸并,使開發(fā)人員更快速對(duì)崩潰日志進(jìn)行分析,以快速、準(zhǔn)確的找到終端存在的問(wèn)題。
本申請(qǐng)?zhí)峁┝耍?/p>
一種日志處理方法,應(yīng)用于服務(wù)器端,包括:
接收來(lái)自客戶端的崩潰異常堆棧;
將所述崩潰異常堆棧所指示原因相同的應(yīng)用崩潰日志歸并。
其中,所述應(yīng)用崩潰日志為如下之一:
java層崩潰日志;
native層崩潰日志。
其中,所述將所述崩潰異常堆棧所指示原因相同的應(yīng)用崩潰日志歸并,包括:解析所述崩潰異常堆棧,獲取崩潰堆棧信息;將所述崩潰堆棧信息中應(yīng)用包名、原因和堆棧相同的應(yīng)用崩潰日志歸并。
其中,所述將所述崩潰異常堆棧所指示原因相同的應(yīng)用崩潰日志歸并,包括:解析所述崩潰異常堆棧,獲取崩潰堆棧信息;將所述崩潰堆棧信息中應(yīng)用包名、問(wèn)題信號(hào)、崩潰返回碼、崩潰信息以及堆棧相同的應(yīng)用崩潰日志歸并。
一種日志處理裝置,包括:
接收模塊,用于接收來(lái)自客戶端的崩潰異常堆棧;
歸并模塊,用于將所述崩潰異常堆棧所指示原因相同的應(yīng)用崩潰日志歸并。
其中,所述應(yīng)用崩潰日志為如下之一:
java層崩潰日志;
native層崩潰日志。
其中,所述歸并模塊,具體用于:解析所述崩潰異常堆棧,獲取崩潰堆棧信息;將所述崩潰堆棧信息中應(yīng)用包名、原因和堆棧相同的應(yīng)用崩潰日志歸并。
其中,所述歸并模塊,具體用于:解析所述崩潰異常堆棧,獲取崩潰堆棧信息;將所述崩潰堆棧信息中應(yīng)用包名、問(wèn)題信號(hào)、崩潰返回碼、崩潰信息以及堆棧相同的應(yīng)用崩潰日志歸并。
一種設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)以下步驟:
接收來(lái)自客戶端的崩潰異常堆棧;
將所述崩潰異常堆棧所指示原因相同的應(yīng)用崩潰日志歸并。
一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)以下步驟:
接收來(lái)自客戶端的崩潰異常堆棧;
將所述崩潰異常堆棧所指示原因相同的應(yīng)用崩潰日志歸并。
本申請(qǐng)能夠?qū)⑾嗤驅(qū)е碌谋罎⑷罩具M(jìn)行歸并,歸并后大量的應(yīng)用崩潰日志將歸并成少量的不同崩潰原因?qū)е碌膽?yīng)用崩潰日志,開發(fā)人員只對(duì)這些經(jīng)過(guò)歸并的應(yīng)用崩潰日志進(jìn)行分析即可,一次即可對(duì)同一類應(yīng)用崩潰日志進(jìn)行分析,不僅省時(shí)省力,成本低,而且使開發(fā)人員能夠快速完成崩潰日志的分析,以快速、準(zhǔn)確的找到終端存在的問(wèn)題。
此外,便于終端生產(chǎn)商根據(jù)歸并后的應(yīng)用崩潰日志,獲取各類型終端的崩潰日志中各種問(wèn)題出現(xiàn)的比率等數(shù)據(jù),能夠更加有針對(duì)性的進(jìn)行處理,有利于改善終端的整體性能,并提高用戶體驗(yàn)。
附圖說(shuō)明
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
圖1為實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的移動(dòng)終端的硬件結(jié)構(gòu)示意;
圖2為支持本發(fā)明移動(dòng)終端之間進(jìn)行通信的通信系統(tǒng)的示意圖;
圖3為本申請(qǐng)日志處理方法的流程示意圖;
圖4為本申請(qǐng)java層崩潰日志處理的流程示意圖;
圖5為本申請(qǐng)native層崩潰日志的流程示意圖;
圖6為本申請(qǐng)日志處理裝置的組成結(jié)構(gòu)示意圖;
圖7為本申請(qǐng)中服務(wù)器的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行更詳細(xì)的說(shuō)明。
現(xiàn)在將參考附圖描述實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的終端。在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說(shuō)明,其本身并沒有特定的意義。因此,"模塊"與"部件"可以混合地使用。
終端可以以各種形式來(lái)實(shí)施。例如,本發(fā)明中描述的終端可以包括諸如移動(dòng)電話、智能電話、筆記本電腦、數(shù)字廣播接收器、pda(個(gè)人數(shù)字助理)、pad(平板電腦)、pmp(便攜式多媒體播放器)、導(dǎo)航裝置等等的移動(dòng)終端以及諸如數(shù)字tv、臺(tái)式計(jì)算機(jī)等等的固定終端。下面,以終端是移動(dòng)終端為例進(jìn)行說(shuō)明。然而,本領(lǐng)域技術(shù)人員將理解的是,除了特別用于移動(dòng)目的的元件之外,根據(jù)本發(fā)明的實(shí)施方式的構(gòu)造也能夠應(yīng)用于固定類型的終端。
圖1為實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的移動(dòng)終端的硬件結(jié)構(gòu)示意圖。
移動(dòng)終端100可以包括無(wú)線通信單元110、a/v(音頻/視頻)輸入單元120、用戶輸入單元130、感測(cè)單元140、輸出單元150、存儲(chǔ)器160、接口單元170、控制器180和電源單元190等等。圖1示出了具有各種組件的移動(dòng)終端,但是應(yīng)理解的是,并不要求實(shí)施所有示出的組件。可以替代地實(shí)施更多或更少的組件。將在下面詳細(xì)描述移動(dòng)終端的元件。
無(wú)線通信單元110通常包括一個(gè)或多個(gè)組件,其允許移動(dòng)終端100與無(wú)線通信系統(tǒng)或網(wǎng)絡(luò)之間的無(wú)線電通信。例如,無(wú)線通信單元可以包括廣播接收模塊111、移動(dòng)通信模塊112、無(wú)線互聯(lián)網(wǎng)模塊113、短程通信模塊114和位置信息模塊115中的至少一個(gè)。
廣播接收模塊111經(jīng)由廣播信道從外部廣播管理服務(wù)器接收廣播信號(hào)和/或廣播相關(guān)信息。廣播信道可以包括衛(wèi)星信道和/或地面信道。廣播管理服務(wù)器可以是生成并發(fā)送廣播信號(hào)和/或廣播相關(guān)信息的服務(wù)器或者接收之前生成的廣播信號(hào)和/或廣播相關(guān)信息并且將其發(fā)送給終端的服務(wù)器。廣播信號(hào)可以包括tv廣播信號(hào)、無(wú)線電廣播信號(hào)、數(shù)據(jù)廣播信號(hào)等等。而且,廣播信號(hào)可以進(jìn)一步包括與tv或無(wú)線電廣播信號(hào)組合的廣播信號(hào)。廣播相關(guān)信息也可以經(jīng)由移動(dòng)通信網(wǎng)絡(luò)提供,并且在該情況下,廣播相關(guān)信息可以由移動(dòng)通信模塊112來(lái)接收。廣播信號(hào)可以以各種形式存在,例如,其可以以數(shù)字多媒體廣播(dmb)的電子節(jié)目指南(epg)、數(shù)字視頻廣播手持(dvb-h)的電子服務(wù)指南(esg)等等的形式而存在。廣播接收模塊111可以通過(guò)使用各種類型的廣播系統(tǒng)接收信號(hào)廣播。特別地,廣播接收模塊111可以通過(guò)使用諸如多媒體廣播-地面(dmb-t)、數(shù)字多媒體廣播-衛(wèi)星(dmb-s)、數(shù)字視頻廣播-手持(dvb-h),前向鏈路媒體(mediaflo@)的數(shù)據(jù)廣播系統(tǒng)、地面數(shù)字廣播綜合服務(wù)(isdb-t)等等的數(shù)字廣播系統(tǒng)接收數(shù)字廣播。廣播接收模塊111可以被構(gòu)造為適合提供廣播信號(hào)的各種廣播系統(tǒng)以及上述數(shù)字廣播系統(tǒng)。經(jīng)由廣播接收模塊111接收的廣播信號(hào)和/或廣播相關(guān)信息可以存儲(chǔ)在存儲(chǔ)器160(或者其它類型的存儲(chǔ)介質(zhì))中。
移動(dòng)通信模塊112將無(wú)線電信號(hào)發(fā)送到基站(例如,接入點(diǎn)、節(jié)點(diǎn)b等等)、外部終端以及服務(wù)器中的至少一個(gè)和/或從其接收無(wú)線電信號(hào)。這樣的無(wú)線電信號(hào)可以包括語(yǔ)音通話信號(hào)、視頻通話信號(hào)、或者根據(jù)文本和/或多媒體消息發(fā)送和/或接收的各種類型的數(shù)據(jù)。
無(wú)線互聯(lián)網(wǎng)模塊113支持移動(dòng)終端的無(wú)線互聯(lián)網(wǎng)接入。該模塊可以內(nèi)部或外部地耦接到終端。該模塊所涉及的無(wú)線互聯(lián)網(wǎng)接入技術(shù)可以包括wlan(無(wú)線lan)(wi-fi)、wibro(無(wú)線寬帶)、wimax(全球微波互聯(lián)接入)、hsdpa(高速下行鏈路分組接入)等等。
短程通信模塊114是用于支持短程通信的模塊。短程通信技術(shù)的一些示例包括藍(lán)牙tm、射頻識(shí)別(rfid)、紅外數(shù)據(jù)協(xié)會(huì)(irda)、超寬帶(uwb)、紫蜂tm等等。
位置信息模塊115是用于檢查或獲取移動(dòng)終端的位置信息的模塊。位置信息模塊的典型示例是gps(全球定位系統(tǒng))。根據(jù)當(dāng)前的技術(shù),gps模塊115計(jì)算來(lái)自三個(gè)或更多衛(wèi)星的距離信息和準(zhǔn)確的時(shí)間信息并且對(duì)于計(jì)算的信息應(yīng)用三角測(cè)量法,從而根據(jù)經(jīng)度、緯度和高度準(zhǔn)確地計(jì)算三維當(dāng)前位置信息。當(dāng)前,用于計(jì)算位置和時(shí)間信息的方法使用三顆衛(wèi)星并且通過(guò)使用另外的一顆衛(wèi)星校正計(jì)算出的位置和時(shí)間信息的誤差。此外,gps模塊115能夠通過(guò)實(shí)時(shí)地連續(xù)計(jì)算當(dāng)前位置信息來(lái)計(jì)算速度信息。
a/v輸入單元120用于接收音頻或視頻信號(hào)。a/v輸入單元120可以包括相機(jī)121和麥克風(fēng)1220,相機(jī)121對(duì)在視頻捕獲模式或圖像捕獲模式中由圖像捕獲裝置獲得的靜態(tài)圖片或視頻的圖像數(shù)據(jù)進(jìn)行處理。處理后的圖像幀可以顯示在顯示單元151上。經(jīng)相機(jī)121處理后的圖像幀可以存儲(chǔ)在存儲(chǔ)器160(或其它存儲(chǔ)介質(zhì))中或者經(jīng)由無(wú)線通信單元110進(jìn)行發(fā)送,可以根據(jù)移動(dòng)終端的構(gòu)造提供兩個(gè)或更多相機(jī)1210。麥克風(fēng)122可以在電話通話模式、記錄模式、語(yǔ)音識(shí)別模式等等運(yùn)行模式中經(jīng)由麥克風(fēng)接收聲音(音頻數(shù)據(jù)),并且能夠?qū)⑦@樣的聲音處理為音頻數(shù)據(jù)。處理后的音頻(語(yǔ)音)數(shù)據(jù)可以在電話通話模式的情況下轉(zhuǎn)換為可經(jīng)由移動(dòng)通信模塊112發(fā)送到移動(dòng)通信基站的格式輸出。麥克風(fēng)122可以實(shí)施各種類型的噪聲消除(或抑制)算法以消除(或抑制)在接收和發(fā)送音頻信號(hào)的過(guò)程中產(chǎn)生的噪聲或者干擾。
用戶輸入單元130可以根據(jù)用戶輸入的命令生成鍵輸入數(shù)據(jù)以控制移動(dòng)終端的各種操作。用戶輸入單元130允許用戶輸入各種類型的信息,并且可以包括鍵盤、鍋?zhàn)衅?、觸摸板(例如,檢測(cè)由于被接觸而導(dǎo)致的電阻、壓力、電容等等的變化的觸敏組件)、滾輪、搖桿等等。特別地,當(dāng)觸摸板以層的形式疊加在顯示單元151上時(shí),可以形成觸摸屏。
感測(cè)單元140檢測(cè)移動(dòng)終端100的當(dāng)前狀態(tài),(例如,移動(dòng)終端100的打開或關(guān)閉狀態(tài))、移動(dòng)終端100的位置、用戶對(duì)于移動(dòng)終端100的接觸(即,觸摸輸入)的有無(wú)、移動(dòng)終端100的取向、移動(dòng)終端100的加速或減速移動(dòng)和方向等等,并且生成用于控制移動(dòng)終端100的操作的命令或信號(hào)。例如,當(dāng)移動(dòng)終端100實(shí)施為滑動(dòng)型移動(dòng)電話時(shí),感測(cè)單元140可以感測(cè)該滑動(dòng)型電話是打開還是關(guān)閉。另外,感測(cè)單元140能夠檢測(cè)電源單元190是否提供電力或者接口單元170是否與外部裝置耦接。感測(cè)單元140可以包括接近傳感器1410將在下面結(jié)合觸摸屏來(lái)對(duì)此進(jìn)行描述。
接口單元170用作至少一個(gè)外部裝置與移動(dòng)終端100連接可以通過(guò)的接口。例如,外部裝置可以包括有線或無(wú)線頭戴式耳機(jī)端口、外部電源(或電池充電器)端口、有線或無(wú)線數(shù)據(jù)端口、存儲(chǔ)卡端口、用于連接具有識(shí)別模塊的裝置的端口、音頻輸入/輸出(i/o)端口、視頻i/o端口、耳機(jī)端口等等。識(shí)別模塊可以是存儲(chǔ)用于驗(yàn)證用戶使用移動(dòng)終端100的各種信息并且可以包括用戶識(shí)別模塊(uim)、客戶識(shí)別模塊(sim)、通用客戶識(shí)別模塊(usim)等等。另外,具有識(shí)別模塊的裝置(下面稱為"識(shí)別裝置")可以采取智能卡的形式,因此,識(shí)別裝置可以經(jīng)由端口或其它連接裝置與移動(dòng)終端100連接。接口單元170可以用于接收來(lái)自外部裝置的輸入(例如,數(shù)據(jù)信息、電力等等)并且將接收到的輸入傳輸?shù)揭苿?dòng)終端100內(nèi)的一個(gè)或多個(gè)元件或者可以用于在移動(dòng)終端和外部裝置之間傳輸數(shù)據(jù)。
另外,當(dāng)移動(dòng)終端100與外部底座連接時(shí),接口單元170可以用作允許通過(guò)其將電力從底座提供到移動(dòng)終端100的路徑或者可以用作允許從底座輸入的各種命令信號(hào)通過(guò)其傳輸?shù)揭苿?dòng)終端的路徑。從底座輸入的各種命令信號(hào)或電力可以用作用于識(shí)別移動(dòng)終端是否準(zhǔn)確地安裝在底座上的信號(hào)。輸出單元150被構(gòu)造為以視覺、音頻和/或觸覺方式提供輸出信號(hào)(例如,音頻信號(hào)、視頻信號(hào)、警報(bào)信號(hào)、振動(dòng)信號(hào)等等)。輸出單元150可以包括顯示單元151、音頻輸出模塊152、警報(bào)單元153等等。
顯示單元151可以顯示在移動(dòng)終端100中處理的信息。例如,當(dāng)移動(dòng)終端100處于電話通話模式時(shí),顯示單元151可以顯示與通話或其它通信(例如,文本消息收發(fā)、多媒體文件下載等等)相關(guān)的用戶界面(ui)或圖形用戶界面(gui)。當(dāng)移動(dòng)終端100處于視頻通話模式或者圖像捕獲模式時(shí),顯示單元151可以顯示捕獲的圖像和/或接收的圖像、示出視頻或圖像以及相關(guān)功能的ui或gui等等。
同時(shí),當(dāng)顯示單元151和觸摸板以層的形式彼此疊加以形成觸摸屏?xí)r,顯示單元151可以用作輸入裝置和輸出裝置。顯示單元151可以包括液晶顯示器(lcd)、薄膜晶體管lcd(tft-lcd)、有機(jī)發(fā)光二極管(oled)顯示器、柔性顯示器、三維(3d)顯示器等等中的至少一種。這些顯示器中的一些可以被構(gòu)造為透明狀以允許用戶從外部觀看,這可以稱為透明顯示器,典型的透明顯示器可以例如為toled(透明有機(jī)發(fā)光二極管)顯示器等等。根據(jù)特定想要的實(shí)施方式,移動(dòng)終端100可以包括兩個(gè)或更多顯示單元(或其它顯示裝置),例如,移動(dòng)終端可以包括外部顯示單元(未示出)和內(nèi)部顯示單元(未示出)。觸摸屏可用于檢測(cè)觸摸輸入壓力以及觸摸輸入位置和觸摸輸入面積。
音頻輸出模塊152可以在移動(dòng)終端處于呼叫信號(hào)接收模式、通話模式、記錄模式、語(yǔ)音識(shí)別模式、廣播接收模式等等模式下時(shí),將無(wú)線通信單元110接收的或者在存儲(chǔ)器160中存儲(chǔ)的音頻數(shù)據(jù)轉(zhuǎn)換音頻信號(hào)并且輸出為聲音。而且,音頻輸出模塊152可以提供與移動(dòng)終端100執(zhí)行的特定功能相關(guān)的音頻輸出(例如,呼叫信號(hào)接收聲音、消息接收聲音等等)。音頻輸出模塊152可以包括揚(yáng)聲器、蜂鳴器等等。
警報(bào)單元153可以提供輸出以將事件的發(fā)生通知給移動(dòng)終端100。典型的事件可以包括呼叫接收、消息接收、鍵信號(hào)輸入、觸摸輸入等等。除了音頻或視頻輸出之外,警報(bào)單元153可以以不同的方式提供輸出以通知事件的發(fā)生。例如,警報(bào)單元153可以以振動(dòng)的形式提供輸出,當(dāng)接收到呼叫、消息或一些其它進(jìn)入通信(incomingcommunication)時(shí),警報(bào)單元153可以提供觸覺輸出(即,振動(dòng))以將其通知給用戶。通過(guò)提供這樣的觸覺輸出,即使在用戶的移動(dòng)電話處于用戶的口袋中時(shí),用戶也能夠識(shí)別出各種事件的發(fā)生。警報(bào)單元153也可以經(jīng)由顯示單元151或音頻輸出模塊152提供通知事件的發(fā)生的輸出。
存儲(chǔ)器160可以存儲(chǔ)由控制器180執(zhí)行的處理和控制操作的軟件程序等等,或者可以暫時(shí)地存儲(chǔ)己經(jīng)輸出或?qū)⒁敵龅臄?shù)據(jù)(例如,電話簿、消息、靜態(tài)圖像、視頻等等)。而且,存儲(chǔ)器160可以存儲(chǔ)關(guān)于當(dāng)觸摸施加到觸摸屏?xí)r輸出的各種方式的振動(dòng)和音頻信號(hào)的數(shù)據(jù)。
存儲(chǔ)器160可以包括至少一種類型的存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)包括閃存、硬盤、多媒體卡、卡型存儲(chǔ)器(例如,sd或dx存儲(chǔ)器等等)、隨機(jī)訪問(wèn)存儲(chǔ)器(ram)、靜態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(sram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、可編程只讀存儲(chǔ)器(prom)、磁性存儲(chǔ)器、磁盤、光盤等等。而且,移動(dòng)終端100可以與通過(guò)網(wǎng)絡(luò)連接執(zhí)行存儲(chǔ)器160的存儲(chǔ)功能的網(wǎng)絡(luò)存儲(chǔ)裝置協(xié)作。
控制器180通??刂埔苿?dòng)終端的總體操作。例如,控制器180執(zhí)行與語(yǔ)音通話、數(shù)據(jù)通信、視頻通話等等相關(guān)的控制和處理。另外,控制器180可以包括用于再現(xiàn)(或回放)多媒體數(shù)據(jù)的多媒體模塊1810,多媒體模塊1810可以構(gòu)造在控制器180內(nèi),或者可以構(gòu)造為與控制器180分離。控制器180可以執(zhí)行模式識(shí)別處理,以將在觸摸屏上執(zhí)行的手寫輸入或者圖片繪制輸入識(shí)別為字符或圖像。
電源單元190在控制器180的控制下接收外部電力或內(nèi)部電力并且提供操作各元件和組件所需的適當(dāng)?shù)碾娏Α?/p>
這里描述的各種實(shí)施方式可以以使用例如計(jì)算機(jī)軟件、硬件或其任何組合的計(jì)算機(jī)可讀介質(zhì)來(lái)實(shí)施。對(duì)于硬件實(shí)施,這里描述的實(shí)施方式可以通過(guò)使用特定用途集成電路(asic)、數(shù)字信號(hào)處理器(dsp)、數(shù)字信號(hào)處理裝置(dspd)、可編程邏輯裝置(pld)、現(xiàn)場(chǎng)可編程門陣列(fpga)、處理器、控制器、微控制器、微處理器、被設(shè)計(jì)為執(zhí)行這里描述的功能的電子單元中的至少一種來(lái)實(shí)施,在一些情況下,這樣的實(shí)施方式可以在控制器180中實(shí)施。對(duì)于軟件實(shí)施,諸如過(guò)程或功能的實(shí)施方式可以與允許執(zhí)行至少一種功能或操作的單獨(dú)的軟件模塊來(lái)實(shí)施。軟件代碼可以由以任何適當(dāng)?shù)木幊陶Z(yǔ)言編寫的軟件應(yīng)用程序(或程序)來(lái)實(shí)施,軟件代碼可以存儲(chǔ)在存儲(chǔ)器160中并且由控制器180執(zhí)行。
至此,己經(jīng)按照其功能描述了移動(dòng)終端。下面,為了簡(jiǎn)要起見,將描述諸如折疊型、直板型、擺動(dòng)型、滑動(dòng)型移動(dòng)終端等等的各種類型的移動(dòng)終端中的滑動(dòng)型移動(dòng)終端作為示例。因此,本發(fā)明能夠應(yīng)用于任何類型的移動(dòng)終端,并且不限于滑動(dòng)型移動(dòng)終端。
如圖1中所示的移動(dòng)終端100可以被構(gòu)造為利用經(jīng)由幀或分組發(fā)送數(shù)據(jù)的諸如有線和無(wú)線通信系統(tǒng)以及基于衛(wèi)星的通信系統(tǒng)來(lái)操作。
現(xiàn)在將參考圖2描述其中根據(jù)本發(fā)明的移動(dòng)終端能夠操作的通信系統(tǒng)。
這樣的通信系統(tǒng)可以使用不同的空中接口和/或物理層。例如,由通信系統(tǒng)使用的空中接口包括例如頻分多址(fdma)、時(shí)分多址(tdma)、碼分多址(cdma)和通用移動(dòng)通信系統(tǒng)(umts)(特別地,長(zhǎng)期演進(jìn)(lte))、全球移動(dòng)通信系統(tǒng)(gsm)等等。作為非限制性示例,下面的描述涉及cdma通信系統(tǒng),但是這樣的教導(dǎo)同樣適用于其它類型的系統(tǒng)。
參考圖2,cdma無(wú)線通信系統(tǒng)可以包括多個(gè)移動(dòng)終端100、多個(gè)基站(bs)270、基站控制器(bsc)275和移動(dòng)交換中心(msc)280。msc280被構(gòu)造為與公共電話交換網(wǎng)絡(luò)(pstn)290形成接口。msc280還被構(gòu)造為與可以經(jīng)由回程線路耦接到基站270的bsc275形成接口。回程線路可以根據(jù)若干己知的接口中的任一種來(lái)構(gòu)造,所述接口包括例如e1/t1、atm,ip、ppp、幀中繼、hdsl、adsl或xdsl。將理解的是,如圖2中所示的系統(tǒng)可以包括多個(gè)bsc2750。
每個(gè)bs270可以服務(wù)一個(gè)或多個(gè)分區(qū)(或區(qū)域),由多向天線或指向特定方向的天線覆蓋的每個(gè)分區(qū)放射狀地遠(yuǎn)離bs270?;蛘撸總€(gè)分區(qū)可以由用于分集接收的兩個(gè)或更多天線覆蓋。每個(gè)bs270可以被構(gòu)造為支持多個(gè)頻率分配,并且每個(gè)頻率分配具有特定頻譜(例如,1.25mhz,5mhz等等)。
分區(qū)與頻率分配的交叉可以被稱為cdma信道。bs270也可以被稱為基站收發(fā)器子系統(tǒng)(bts)或者其它等效術(shù)語(yǔ)。在這樣的情況下,術(shù)語(yǔ)"基站"可以用于籠統(tǒng)地表示單個(gè)bsc275和至少一個(gè)bs270?;疽部梢员环Q為"蜂窩站"?;蛘?,特定bs270的各分區(qū)可以被稱為多個(gè)蜂窩站。
如圖2中所示,廣播發(fā)射器(bt)295將廣播信號(hào)發(fā)送給在系統(tǒng)內(nèi)操作的移動(dòng)終端100。如圖1中所示的廣播接收模塊111被設(shè)置在移動(dòng)終端100處以接收由bt295發(fā)送的廣播信號(hào)。在圖2中,示出了幾個(gè)全球定位系統(tǒng)(gps)衛(wèi)星300。衛(wèi)星300幫助定位多個(gè)移動(dòng)終端100中的至少一個(gè)。
在圖2中,描繪了多個(gè)衛(wèi)星300,但是理解的是,可以利用任何數(shù)目的衛(wèi)星獲得有用的定位信息。如圖1中所示的gps模塊115通常被構(gòu)造為與衛(wèi)星300配合以獲得想要的定位信息。替代gps跟蹤技術(shù)或者在gps跟蹤技術(shù)之外,可以使用可以跟蹤移動(dòng)終端的位置的其它技術(shù)。另外,至少一個(gè)gps衛(wèi)星300可以選擇性地或者額外地處理衛(wèi)星dmb傳輸。
作為無(wú)線通信系統(tǒng)的一個(gè)典型操作,bs270接收來(lái)自各種移動(dòng)終端100的反向鏈路信號(hào)。移動(dòng)終端100通常參與通話、消息收發(fā)和其它類型的通信。特定基站270接收的每個(gè)反向鏈路信號(hào)被在特定bs270內(nèi)進(jìn)行處理。獲得的數(shù)據(jù)被轉(zhuǎn)發(fā)給相關(guān)的bsc275。bsc提供通話資源分配和包括bs270之間的軟切換過(guò)程的協(xié)調(diào)的移動(dòng)管理功能。bsc275還將接收到的數(shù)據(jù)路由到msc280,其提供用于與pstn290形成接口的額外的路由服務(wù)。類似地,pstn290與msc280形成接口,msc與bsc275形成接口,并且bsc275相應(yīng)地控制bs270以將正向鏈路信號(hào)發(fā)送到移動(dòng)終端100。
基于上述移動(dòng)終端硬件結(jié)構(gòu)以及通信系統(tǒng),提出本發(fā)明方法各個(gè)實(shí)施例。
在程序開發(fā)過(guò)程中,log是廣泛使用的用來(lái)記錄程序執(zhí)行過(guò)程的機(jī)制。android為用戶空間的程序開發(fā)人員提供了輕量級(jí)的logger日志系統(tǒng),該日志系統(tǒng)是以驅(qū)動(dòng)程序的形式實(shí)現(xiàn)在內(nèi)核空間中的,產(chǎn)生的log是以設(shè)備文件的形式存儲(chǔ)在文件夾/dev/log/中,該日志系統(tǒng)提供了寫log到設(shè)備文件和從設(shè)備文件中讀log接口。android在用戶空間提供了使用logger日志系統(tǒng)的java接口和c/c++接口供開發(fā)人員使用,log文件的寫入是android框架層代碼通過(guò)jni調(diào)用系統(tǒng)運(yùn)行庫(kù),并通過(guò)系統(tǒng)運(yùn)行庫(kù)將log寫入設(shè)備文件中;log文件的讀取通過(guò)android提供的logcat工具執(zhí)行,logcat工具根據(jù)開發(fā)人員輸入的命令從設(shè)備文件中讀取log,并根據(jù)開發(fā)人員的要求將經(jīng)過(guò)格式化的log信息輸出。
實(shí)際應(yīng)用中,終端將大量的應(yīng)用崩潰日志(如java層崩潰日志、native層崩潰日志等)上傳給服務(wù)器,服務(wù)器接收終端上傳的應(yīng)用崩潰日志,開發(fā)人員需要對(duì)服務(wù)器上終端的大量應(yīng)用崩潰日志進(jìn)行分析,以找出終端存在的問(wèn)題。
假如某終端廠商在市場(chǎng)上有1000萬(wàn)臺(tái)機(jī)器,在終端的生命周期范圍內(nèi)應(yīng)用java層崩潰異常上報(bào)率為10%,則服務(wù)器上將有100萬(wàn)條應(yīng)用java層崩潰日志信息。假如某廠商在市場(chǎng)上有1000萬(wàn)臺(tái)機(jī)器,手機(jī)生命周期范圍內(nèi)應(yīng)用native層崩潰異常上報(bào)率為5%,則服務(wù)器上將有50萬(wàn)條應(yīng)用native層崩潰日志信息。
如果開發(fā)人員對(duì)每一條日志都進(jìn)行分析的話,很明顯這是無(wú)法完成的任務(wù)。一方面,耗時(shí)費(fèi)力,效率低,成本高;另一方面,對(duì)日志分析的速度和準(zhǔn)確度,將直接影響到是否能及時(shí)準(zhǔn)確的發(fā)現(xiàn)終端的問(wèn)題,如果不能及時(shí)準(zhǔn)確的發(fā)現(xiàn)終端存在的問(wèn)題并予以解決,將會(huì)給用戶以及終端生產(chǎn)商都帶來(lái)?yè)p失。
針對(duì)上述問(wèn)題,本申請(qǐng)?zhí)峁┮环N日志處理方法,能夠?qū)⑾嗤驅(qū)е碌娜罩具M(jìn)行自動(dòng)歸并,便于開發(fā)人員對(duì)歸并后的一類日志進(jìn)行處理,一方面可以提高日志處理效率,降低人力成本和時(shí)間成本,另一方面,也能夠有效提高日志處理的速度和準(zhǔn)確度,從而使得開發(fā)人員能夠及時(shí)準(zhǔn)確的發(fā)現(xiàn)終端存在的問(wèn)題,避免損失。
實(shí)施例一
根據(jù)本發(fā)明的一個(gè)實(shí)施例,提供了一種日志處理方法,如圖3所示,包括:
步驟301,接收來(lái)自客戶端的崩潰異常堆棧;
步驟302,將所述崩潰異常堆棧所指示原因相同的應(yīng)用崩潰日志歸并。
本實(shí)施例中,能夠?qū)⑾嗤驅(qū)е碌谋罎⑷罩具M(jìn)行歸并,歸并后大量的應(yīng)用崩潰日志將歸并成少量的不同崩潰原因?qū)е碌膽?yīng)用崩潰日志,開發(fā)人員只對(duì)這些經(jīng)過(guò)歸并的應(yīng)用崩潰日志進(jìn)行分析即可,一次即可對(duì)同一類應(yīng)用崩潰日志進(jìn)行分析,不僅省時(shí)省力,成本低,而且使開發(fā)人員能夠快速完成崩潰日志的分析,以快速、準(zhǔn)確的找到終端存在的問(wèn)題。此外,便于終端生產(chǎn)商根據(jù)歸并后的應(yīng)用崩潰日志,獲取各類型終端的崩潰日志中各種問(wèn)題出現(xiàn)的比率等數(shù)據(jù),能夠更加有針對(duì)性的進(jìn)行處理,有利于改善終端的整體性能,并提高用戶體驗(yàn)。
實(shí)際應(yīng)用中,所述應(yīng)用崩潰日志可以為如下之一:1)java層崩潰日志;2)native層崩潰日志。
一種實(shí)現(xiàn)方式中,將所述崩潰異常堆棧所指示原因相同的應(yīng)用崩潰日志歸并,可以包括:解析所述崩潰異常堆棧,獲取崩潰堆棧信息;將所述崩潰堆棧信息中應(yīng)用包名、原因和堆棧相同的應(yīng)用崩潰日志歸并。
另一種實(shí)現(xiàn)方式中,將所述崩潰異常堆棧所指示原因相同的應(yīng)用崩潰日志歸并,可以包括:解析所述崩潰異常堆棧,獲取崩潰堆棧信息;將所述崩潰堆棧信息中應(yīng)用包名、問(wèn)題信號(hào)、崩潰返回碼、崩潰信息以及堆棧相同的應(yīng)用崩潰日志歸并。
下面分別以不同實(shí)例來(lái)詳細(xì)說(shuō)明日志處理的過(guò)程。
實(shí)例1
本實(shí)例以android應(yīng)用java層崩潰日志為例進(jìn)行詳細(xì)說(shuō)明。
本實(shí)例中,android應(yīng)用java層崩潰日志的處理方法可以包括:服務(wù)器接收客戶端上傳的應(yīng)用java層崩潰日志,根據(jù)所述應(yīng)用java層崩潰日志的java層崩潰堆棧信息(邏輯上認(rèn)為對(duì)于相同的應(yīng)用有相同java層崩潰堆棧信息是相同原因?qū)е碌?,將相同原因?qū)е碌膉ava層崩潰日志進(jìn)行歸并。這樣歸并后,大量的應(yīng)用java層崩潰日志將歸并成少量的不同java層崩潰原因?qū)е碌膽?yīng)用java層崩潰日志,開發(fā)人員只對(duì)這些經(jīng)過(guò)歸并的應(yīng)用java層崩潰日志進(jìn)行分析即可,不僅省時(shí)省力,成本低,而且使開發(fā)人員能夠快速完成應(yīng)用java層崩潰日志的分析,以快速、準(zhǔn)確的找到終端存在的問(wèn)題。
實(shí)際應(yīng)用中,制作應(yīng)用java層崩潰日志自動(dòng)解析腳本,通過(guò)運(yùn)行該腳本可以對(duì)上傳到服務(wù)器上的應(yīng)用java崩潰日志進(jìn)行解析歸并。經(jīng)過(guò)解析歸并后,相同原因?qū)е碌膽?yīng)用java層崩潰日志將歸并為一個(gè)相同問(wèn)題,開發(fā)人員分析和解決問(wèn)題會(huì)更加高效。
實(shí)際應(yīng)用中,客戶端在log上報(bào)系統(tǒng)中配置受保護(hù)的廣播。當(dāng)應(yīng)用出現(xiàn)java層崩潰時(shí),系統(tǒng)發(fā)送該廣播到log上報(bào)系統(tǒng)中。log上報(bào)系統(tǒng)收到廣播后,上傳出現(xiàn)java層崩潰的崩潰異常堆棧至服務(wù)器,該崩潰異常堆棧為java層崩潰異常堆棧stack.txt,可以包括應(yīng)用包名packagename、崩潰原因和java堆棧信息等內(nèi)容。實(shí)際應(yīng)用中,該客戶端可以是如圖1所示的終端。
服務(wù)器接收客戶端上傳的崩潰異常堆棧,解析客戶端上傳的java層崩潰異常堆棧stack.txt。通過(guò)java層崩潰異常堆棧stack.txt,可獲取到出現(xiàn)java層崩潰的應(yīng)用包名packagename,出現(xiàn)java層崩潰的原因reason,以及出現(xiàn)java層崩潰時(shí)的堆棧stack。如果兩份java層崩潰日志的packagename、reason、stack都相同,則認(rèn)為這兩個(gè)java層崩潰是相同java層崩潰問(wèn)題導(dǎo)致的。也就是說(shuō),將packagename、reason、stack都相同的java層崩潰日志歸并為一類(例如,歸并為一個(gè)隊(duì)列),便于開發(fā)人員按照歸并的類別進(jìn)行日志分析。
實(shí)際應(yīng)用中,歸并java層崩潰日志時(shí)可以將使用packagename+reason+stack作為關(guān)鍵字進(jìn)行歸并。其中,packagename、reason和stack分別為字符串,packagename+reason+stack為上述三個(gè)字符串鏈接在一起形成的匹配字符串,可以以該匹配字符串為關(guān)鍵字對(duì)java層崩潰日志進(jìn)行匹配處理,從而將packagename、reason和stack都相同的java層崩潰日志放入同一隊(duì)列進(jìn)行處理。
如圖4所示,本實(shí)例中日志處理的流程可以包括:
步驟401,獲取stack.txt文件,從文件開頭開始讀取文件行,進(jìn)入步驟402。
步驟402,讀取下一行,讀取結(jié)束?如果是,則進(jìn)入步驟406;如果夠,則進(jìn)入步驟407。
步驟403,讀取下一行,該行字符串是否以at或…開頭,如果是則進(jìn)入步驟405;如果不是,則進(jìn)入步驟404。
步驟404,設(shè)置該行字符串為reason,返回步驟402。
步驟405,添加該行到stack中,返回步驟402。
步驟406,獲取到了當(dāng)前應(yīng)用java崩潰日志的packagename、reason、trace之后,在已有應(yīng)用java層崩潰問(wèn)題隊(duì)列中查找是否包含當(dāng)前應(yīng)用java崩潰日志的packagename+reason+trace,如果是,則進(jìn)入步驟407,否則進(jìn)入步驟408。
步驟407,將該應(yīng)用java崩潰日志作為已有應(yīng)用java崩潰日志處理,結(jié)束。
步驟408,將packagename+reason+trace添加到應(yīng)用java層崩潰問(wèn)題隊(duì)列,將該應(yīng)用java層崩潰日志作為新的應(yīng)用java層崩潰原因處理,結(jié)束。
本實(shí)例中,將上傳到服務(wù)器的應(yīng)用java層崩潰日志進(jìn)行解析和歸并處理。根據(jù)解析出的java層崩潰的堆棧信息,對(duì)相同原因?qū)е碌膉ava層崩潰日志進(jìn)行歸并。經(jīng)過(guò)歸并后,大量的應(yīng)用java層崩潰日志將歸并成少量的不同java層崩潰原因?qū)е碌膽?yīng)用java層崩潰日志,開發(fā)人員只對(duì)這些經(jīng)過(guò)歸并的應(yīng)用java層崩潰日志進(jìn)行分析,不僅省時(shí)省力,成本低,而且使開發(fā)人員能夠快速完成崩潰日志的分析,以快速、準(zhǔn)確的找到終端存在的問(wèn)題。此外,便于終端生產(chǎn)商根據(jù)歸并后的應(yīng)用崩潰日志,獲取各類型終端的崩潰日志中各種問(wèn)題出現(xiàn)的比率等數(shù)據(jù),能夠更加有針對(duì)性的進(jìn)行處理,有利于改善終端的整體性能,并提高用戶體驗(yàn)。
實(shí)例2
本實(shí)例以android應(yīng)用native層崩潰日志為例進(jìn)行詳細(xì)說(shuō)明。
本實(shí)例中,將上傳到服務(wù)器的應(yīng)用native層崩潰日志進(jìn)行解析和歸并處理。根據(jù)解析出的native層崩潰的堆棧信息(邏輯上認(rèn)為對(duì)于相同的應(yīng)用有相同native層崩潰堆棧信息是相同原因?qū)е碌?,對(duì)相同原因?qū)е碌膎ative層崩潰日志進(jìn)行歸并。經(jīng)過(guò)歸并后,大量的應(yīng)用native層崩潰日志將歸并成少量的不同native層崩潰原因?qū)е碌膽?yīng)用native層崩潰日志,開發(fā)人員只對(duì)這些經(jīng)過(guò)歸并的應(yīng)用native層崩潰日志進(jìn)行分析即可,使得開發(fā)人員能夠更加快速的完成應(yīng)用native層崩潰日志的分析。
實(shí)際應(yīng)用中,可以制作應(yīng)用native層崩潰日志自動(dòng)解析腳本,通過(guò)運(yùn)行該腳本可以對(duì)上傳到服務(wù)器的應(yīng)用native崩潰日志進(jìn)行解析歸并。經(jīng)過(guò)解析歸并后,相同原因?qū)е碌膽?yīng)用native層崩潰日志將歸并為一個(gè)相同問(wèn)題,開發(fā)人員分析和解決問(wèn)題會(huì)更加高效。
實(shí)際應(yīng)用中,客戶端在log上報(bào)系統(tǒng)中配置受保護(hù)的廣播。當(dāng)應(yīng)用出現(xiàn)native層崩潰時(shí),系統(tǒng)發(fā)送該廣播到log上報(bào)系統(tǒng)中。log上報(bào)系統(tǒng)收到廣播后,上傳出現(xiàn)java層崩潰的崩潰異常堆棧至服務(wù)器,該崩潰異常堆棧為java層崩潰異常堆棧stack.txt,可以包括應(yīng)用包名packagename、崩潰時(shí)native堆棧信息等內(nèi)容。實(shí)際應(yīng)用中,該客戶端可以是如圖1所示的終端。
服務(wù)器接收客戶端上傳的native層崩潰異常堆棧stack.txt并解析進(jìn)行解析。通過(guò)native層崩潰異常堆棧stack.txt,可獲取到出現(xiàn)native層崩潰的應(yīng)用包名packagename、出現(xiàn)native層崩潰時(shí)問(wèn)題信號(hào)signal、崩潰返回碼code、崩潰信息abortmessage以及出現(xiàn)native層崩潰時(shí)的堆棧stack。如果兩份native層崩潰日志的packagename、signal、code、abortmessage、stack都相同,則認(rèn)為這兩個(gè)native層崩潰日志是相同的native層崩潰問(wèn)題導(dǎo)致的。也就是說(shuō),將packagename、signal、code、abortmessage、stack都相同的native層崩潰日志歸并為一類(例如,歸并為一個(gè)隊(duì)列),便于開發(fā)人員按照歸并的類別進(jìn)行native層崩潰日志分析。
實(shí)際應(yīng)用中,歸并native層崩潰日志時(shí)可以將使用packagename+signal+code+abortmessage+stack作為關(guān)鍵字進(jìn)行歸并。具體的,packagename、signal、code、abortmessage、stack都是字符串,packagename+signal+code+abortmessage
+stack為上述五個(gè)字符串鏈接在一起形成的匹配字符串,可以以該匹配字符串為關(guān)鍵字對(duì)native層崩潰日志進(jìn)行匹配處理,從而將packagename、signal、code、abortmessage、stack都相同的native層崩潰日志放入同一隊(duì)列進(jìn)行處理。
如圖5所示,本實(shí)例中應(yīng)用native層崩潰日志的處理流程可以包括:
步驟501,獲取stack.txt文件,從文件開頭開始讀取文件行,進(jìn)入步驟502。
步驟502,讀取下一行,是否讀取結(jié)束,如果是則進(jìn)入步驟510,如果不是則進(jìn)入步驟503。
步驟503,該行字符串是否包含packagename,如果不是則進(jìn)入步驟502;如果是則進(jìn)入步驟504。
步驟504,獲取下一行的問(wèn)題信號(hào)(signal)、問(wèn)題返回碼(code),繼續(xù)進(jìn)入步驟505。
步驟505,繼續(xù)獲取下一行的崩潰信息abortmessage,繼續(xù)進(jìn)入步驟506。
步驟506,讀取下一行,是否讀取結(jié)束,如果否則返回步驟507,如果是則進(jìn)入步驟510。
步驟507,該行字符串是否包含回溯堆棧(backtrace),如果否則返回步驟506;如果是則進(jìn)入步驟508。
步驟508,繼續(xù)讀取下一行,是否讀取結(jié)束,如果否則進(jìn)入步驟509;如果是則進(jìn)入步驟510。
步驟509,該行是否包含/system或者/data,如果是則繼續(xù)步驟510,否則返回步驟508。
實(shí)際應(yīng)用中,系統(tǒng)應(yīng)用安裝后,是安裝在/system分區(qū)中。第三方應(yīng)用或者系統(tǒng)應(yīng)用更新包是安裝在/data分區(qū)中。所以當(dāng)發(fā)生nativecrash時(shí),出現(xiàn)異常的庫(kù)文件的路徑以/system或/data開頭。因此,在步驟509中要驗(yàn)證該含是否包含/system或者/data,以確認(rèn)是否為出現(xiàn)異常的庫(kù)文件。
步驟510,將該字符串存入stack。
步驟511,此時(shí)已獲取到當(dāng)前應(yīng)用native崩潰日志的packagename,signal、code、abortmessage以及stack,判斷已有應(yīng)用native層崩潰問(wèn)題隊(duì)列中查找是否包含packagename+signal+code+abortmessage+stack,如果是則進(jìn)入步驟512,否則進(jìn)入步驟513。
步驟512,將該應(yīng)用native崩潰日志作為已有應(yīng)用native崩潰日志處理,結(jié)束。
步驟513,將packagename+signal+code+abortmessage+stack添加到應(yīng)用native層崩潰問(wèn)題隊(duì)列,將該應(yīng)用native層崩潰日志作為新的應(yīng)用native層崩潰原因處理,結(jié)束。
本實(shí)例中,將上傳到服務(wù)器的應(yīng)用native層崩潰日志進(jìn)行解析和歸并處理。根據(jù)native層崩潰的堆棧信息,對(duì)相同原因?qū)е碌膎ative層崩潰日志進(jìn)行歸并。經(jīng)過(guò)歸并后,大量的應(yīng)用native層崩潰日志將歸并成少量的不同native層崩潰原因?qū)е碌膽?yīng)用native層崩潰日志,開發(fā)人員只對(duì)這些經(jīng)過(guò)歸并的應(yīng)用native層崩潰日志進(jìn)行分析,不僅省時(shí)省力,成本低,而且使開發(fā)人員能夠快速完成崩潰日志的分析,以快速、準(zhǔn)確的找到終端存在的問(wèn)題。此外,便于終端生產(chǎn)商根據(jù)歸并后的應(yīng)用崩潰日志,獲取各類型終端的崩潰日志中各種問(wèn)題出現(xiàn)的比率等數(shù)據(jù),能夠更加有針對(duì)性的進(jìn)行處理,有利于改善終端的整體性能,并提高用戶體驗(yàn)。
實(shí)施例二
根據(jù)本發(fā)明的另一實(shí)施例,提供了一種日志處理裝置,如圖6所示,可以包括:
接收模塊61,用于接收來(lái)自客戶端的崩潰異常堆棧;
歸并模塊62,用于將所述崩潰異常堆棧所指示原因相同的應(yīng)用崩潰日志歸并。
實(shí)際應(yīng)用中,所述應(yīng)用崩潰日志為如下之一:java層崩潰日志;native層崩潰日志。
一種實(shí)現(xiàn)方式中,所述歸并模塊62,具體可以用于:解析所述崩潰異常堆棧,獲取崩潰堆棧信息;將所述崩潰堆棧信息中應(yīng)用包名、原因和堆棧相同的應(yīng)用崩潰日志歸并。
另一種實(shí)現(xiàn)方式中,所述歸并模塊62,具體可以用于:解析所述崩潰異常堆棧,獲取崩潰堆棧信息;將所述崩潰堆棧信息中應(yīng)用包名、問(wèn)題信號(hào)、崩潰返回碼、崩潰信息以及堆棧相同的應(yīng)用崩潰日志歸并。
本實(shí)施例中的日志處理裝置可以實(shí)現(xiàn)實(shí)施例一所述方法的所有細(xì)節(jié),可參照方法的相關(guān)說(shuō)明。實(shí)際應(yīng)用中,本實(shí)施例中的日志處理裝置可以通過(guò)設(shè)置于服務(wù)器或其他類似設(shè)備上來(lái)實(shí)現(xiàn)上述功能,或者本實(shí)施例中的日志處理裝置可以直接通過(guò)服務(wù)器或其他類似設(shè)備來(lái)實(shí)現(xiàn)。
實(shí)際應(yīng)用中,接收模塊61和歸并模塊62分別可以通過(guò)軟件、硬件或兩者結(jié)合的方式實(shí)現(xiàn)。對(duì)此,本文不作限制。例如,接收模塊61和歸并模塊62可以通過(guò)應(yīng)用崩潰日志自動(dòng)解析腳本來(lái)實(shí)現(xiàn)。
如圖7所示,為上述服務(wù)器的結(jié)構(gòu)示意圖,包括:輸入輸出(io)總線、處理器70、存儲(chǔ)器71、內(nèi)存72和通信裝置73。其中,
輸入輸出(io)總線分別與自身所屬的服務(wù)器的其它部件(處理器70、存儲(chǔ)器71、內(nèi)存72和通信裝置73)連接,并且為其它部件提供傳送線路。
處理器70通??刂谱陨硭鶎俚姆?wù)器的總體操作。例如,處理器70執(zhí)行計(jì)算和確認(rèn)等操作。其中,處理器70可以是中央處理器(cpu)。
通信裝置73,通常包括一個(gè)或多個(gè)組件,其允許自身所屬的服務(wù)器與無(wú)線通信系統(tǒng)或網(wǎng)絡(luò)之間的無(wú)線電通信。
存儲(chǔ)器71存儲(chǔ)處理器70可讀、處理器可執(zhí)行的軟件代碼,其包含用于控制處理器70執(zhí)行本文描述的功能的指令(即軟件執(zhí)行功能)。
其中,上述日志處理裝置中,實(shí)現(xiàn)接收模塊61和歸并模塊62的功能的軟件代碼可存儲(chǔ)在存儲(chǔ)器71中,并由處理器70執(zhí)行或編譯后執(zhí)行。
實(shí)施例三
根據(jù)本發(fā)明的又一實(shí)施例,提供了一種設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)以下步驟:
接收來(lái)自客戶端的崩潰異常堆棧;
將所述崩潰異常堆棧所指示原因相同的應(yīng)用崩潰日志歸并。
本實(shí)施例中的設(shè)備可以實(shí)現(xiàn)實(shí)施例一所述方法的所有細(xì)節(jié),可參照方法的相關(guān)說(shuō)明。實(shí)際應(yīng)用中,本實(shí)施例中的設(shè)備可以通過(guò)通過(guò)服務(wù)器或其他類似設(shè)備來(lái)實(shí)現(xiàn)。例如,可以通過(guò)圖7所示的服務(wù)器來(lái)實(shí)現(xiàn)。
實(shí)施例四
根據(jù)本發(fā)明的又一實(shí)施例,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,該程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)以下步驟:
接收來(lái)自客戶端的崩潰異常堆棧;
將所述崩潰異常堆棧所指示原因相同的應(yīng)用崩潰日志歸并。
可選地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以包括但不限于:u盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
可選地,在本實(shí)施例中,處理器根據(jù)存儲(chǔ)介質(zhì)中已存儲(chǔ)的程序代碼執(zhí)行上述實(shí)施例的方法步驟。
可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例及可選實(shí)施方式中所描述的示例,本實(shí)施例在此不再贅述。
需要說(shuō)明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過(guò)程、方法、物品或者裝置中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說(shuō)明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。