亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

重啟日志歸并方法、上傳方法、系統(tǒng)及可讀存儲介質(zhì)與流程

文檔序號:11386375閱讀:365來源:國知局
本發(fā)明涉及重啟日志
技術(shù)領(lǐng)域
:,尤其涉及一種重啟日志歸并方法、上傳方法、系統(tǒng)及可讀存儲介質(zhì)。
背景技術(shù)
::目前,市面上的手機(jī)、ipad等移動終端在系統(tǒng)出現(xiàn)異常時,抓取相關(guān)的系統(tǒng)信息上傳到服務(wù)器,開發(fā)人員根據(jù)服務(wù)器接收的系統(tǒng)信息分析異常原因。當(dāng)使用android系統(tǒng)的移動終端出現(xiàn)android框架異常導(dǎo)致系統(tǒng)重啟時,會將重啟日志發(fā)送到服務(wù)器,因市面上使用android系統(tǒng)的移動終端眾多,使發(fā)送到服務(wù)器上的重啟日志也眾多,且很多移動終端的系統(tǒng)重啟由重復(fù)原因?qū)е碌模瑥亩闪酥貜?fù)的重啟日志。因開發(fā)人員需要對每一條重啟日志進(jìn)行分析,此重復(fù)的重啟日志增加了開發(fā)人員的工作量,從而無法及時發(fā)現(xiàn)市面上移動終端出現(xiàn)的問題,也就無法快速解決問題,進(jìn)而導(dǎo)致供應(yīng)商無法提供優(yōu)質(zhì)的系統(tǒng)。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的主要目的在于提供一種重啟日志歸并方法、上傳方法、系統(tǒng)及可讀存儲介質(zhì),旨在解決現(xiàn)有技術(shù)對大量重復(fù)的重啟日志分析,工作量大的問題。為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種重啟日志歸并方法,所述重啟日志歸并方法包括以下步驟:接收并解析移動終端上傳的重啟日志,以獲取移動終端的重啟類型和重啟原因,并將重啟類型和重啟原因合并作為重啟關(guān)鍵字;判斷重啟問題數(shù)據(jù)庫中是否存在所述重啟關(guān)鍵字;當(dāng)重啟問題數(shù)據(jù)庫中不存在所述重啟關(guān)鍵字時,將所述重啟日志作為一類新的重啟原因類型存儲,并將所述重啟關(guān)鍵字添加到重啟問題數(shù)據(jù)庫以與新的重啟原因類型關(guān)聯(lián)存儲。可選地,所述判斷重啟問題數(shù)據(jù)庫中是否存在所述重啟關(guān)鍵字的步驟之后包括包括:當(dāng)重啟問題數(shù)據(jù)庫中存在所述重啟關(guān)鍵字時,將重啟關(guān)鍵字對應(yīng)的重啟日志歸入原有的重啟原因類型,并將重啟關(guān)鍵字對應(yīng)的重啟日志數(shù)量更新??蛇x地,所述接收并解析移動終端上傳的重啟日志,以獲取重啟類型和重啟原因的步驟包括:接收移動終端上傳的重啟日志,并對重啟日志中的崩潰日志和系統(tǒng)日志解析以獲取重啟類型;根據(jù)所述重啟類型的類別,獲取重啟類型對應(yīng)的重啟原因??蛇x地,所述對重啟日志中的崩潰日志和系統(tǒng)日志解析以獲取重啟類型的步驟包括:判斷崩潰日志中是否存在第一字符串,當(dāng)存在第一字符串時,判定重啟類型為第一類重啟;判斷崩潰日志中是否存在第二字符串,當(dāng)存在第二字符串時,判定重啟類型為第二類重啟;判斷系統(tǒng)日志中是否存在第三字符串,當(dāng)存在第三字符串時,判定重啟類型為第三類重啟。可選地,所述根據(jù)所述重啟類型的分類,獲取分類對應(yīng)的重啟原因的步驟包括:當(dāng)重啟類型為第一類重啟時,根據(jù)第一類重啟的重啟信息確定第一重啟原因;當(dāng)重啟類型為第二類重啟時,根據(jù)第二類重啟的重啟信息確定第二重啟原因;當(dāng)重啟類型為第三類重啟時,根據(jù)第三類重啟的重啟信息確定第三重啟原因。可選地,所述將重啟類型和重啟原因合并作為重啟關(guān)鍵字的步驟包括:將第一類重啟和第一重啟原因合并作為第一重啟關(guān)鍵字;將第二類重啟和第二重啟原因合并作為第二重啟關(guān)鍵字;將第三類重啟和第三重啟原因合并作為第三重啟關(guān)鍵字。此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種重啟日志上傳方法,所述重啟日志上傳方法包括以下步驟:設(shè)置重啟標(biāo)識符,當(dāng)檢測到移動終端出現(xiàn)重啟時,判斷重啟標(biāo)識符是否等于預(yù)設(shè)值;當(dāng)重啟標(biāo)識符等于預(yù)設(shè)值時,抓取重啟日志,并將所述重啟日志上傳至服務(wù)器??蛇x地,所述當(dāng)重啟標(biāo)識符等于預(yù)設(shè)值時,抓取重啟日志,并將所述重啟日志上傳至服務(wù)器的步驟包括:當(dāng)重啟標(biāo)識符等于預(yù)設(shè)值時,生成框架異常廣播;將所述框架異常廣播發(fā)送到日志系統(tǒng),以供日志系統(tǒng)基于框架異常廣播抓取重啟日志,并將所述重啟日志上傳至服務(wù)器。此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種重啟日志歸并系統(tǒng),所述重啟日志歸并系統(tǒng)包括:存儲器、處理器、通信總線以及存儲在所述存儲器上的重啟日志歸并程序:所述通信總線用于實(shí)現(xiàn)處理器和存儲器之間的連接通信;所述處理器用于執(zhí)行所述重啟日志歸并程序,以實(shí)現(xiàn)以下步驟:接收并解析移動終端上傳的重啟日志,以獲取重啟類型和重啟原因,并將重啟類型和重啟原因合并作為重啟關(guān)鍵字;判斷重啟問題數(shù)據(jù)庫中是否存在所述重啟關(guān)鍵字;當(dāng)重啟問題數(shù)據(jù)庫中不存在所述重啟關(guān)鍵字時,將所述重啟關(guān)鍵字添加到重啟問題數(shù)據(jù)庫,并將所述重啟日志作為一類新的重啟原因類型存儲。此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可讀存儲介質(zhì)存儲有一個或者一個以上程序,所述一個或者一個以上程序可被一個或者一個以上的處理器執(zhí)行以用于:接收并解析移動終端上傳的重啟日志,以獲取移動終端的重啟類型和重啟原因,并將重啟類型和重啟原因合并作為重啟關(guān)鍵字;判斷重啟問題數(shù)據(jù)庫中是否存在所述重啟關(guān)鍵字;當(dāng)重啟問題數(shù)據(jù)庫中不存在所述重啟關(guān)鍵字時,將所述重啟日志作為一類新的重啟原因類型存儲,并將所述重啟關(guān)鍵字添加到重啟問題數(shù)據(jù)庫以與新的重啟原因類型關(guān)聯(lián)存儲。本發(fā)明技術(shù)方案的重啟日志歸并方法,接收移動終端上傳的重啟日志進(jìn)行解析,獲取引起移動終端重啟的重啟類型以及重啟原因,并將此重啟類型和重啟原因合并為重啟關(guān)鍵字;判斷重啟數(shù)據(jù)庫中是否存在此合并的重啟關(guān)鍵字,當(dāng)不存在此合并的重啟關(guān)鍵字時,說明其為一類新的重啟關(guān)鍵字,即引起重啟的重啟原因類型是新的,將重啟日志作為一類新的重啟原因類型存儲,并將重啟關(guān)鍵字添加到重啟問題數(shù)據(jù)庫以與新的重啟原因類型關(guān)聯(lián)存儲。本方案通過將重啟類型和重啟原因合并得到的重啟關(guān)鍵字和重啟問題數(shù)據(jù)庫中的重啟關(guān)鍵字比較,判斷重啟問題數(shù)據(jù)庫中是否已經(jīng)存在此合并得到的重啟關(guān)鍵字,當(dāng)不存在時,則說明出現(xiàn)一類新的重啟關(guān)鍵字,將重啟日志作為一類新的重啟原因類型存儲,并將重啟關(guān)鍵字添加到重啟問題數(shù)據(jù)庫以與新的重啟原因類型關(guān)聯(lián)存儲。從而重啟數(shù)據(jù)庫中存儲有多種不同類型的重啟關(guān)鍵字,開發(fā)人員只需要分析重啟問題數(shù)據(jù)庫中的不同類型的重啟關(guān)鍵字即可了解引起系統(tǒng)重啟的原因,避免對重復(fù)類型的重啟日志分析,減少工作量,提高了分析效率。附圖說明圖1為實(shí)現(xiàn)本發(fā)明各個實(shí)施例一個可選的移動終端的硬件結(jié)構(gòu)示意圖;圖2為如圖1所示的移動終端的無線通訊系統(tǒng)示意圖;圖3為本發(fā)明重啟日志歸并方法第一實(shí)施例的流程示意圖;圖4為本發(fā)明重啟日志歸并方法第二實(shí)施例的流程示意圖;圖5為本發(fā)明重啟日志上傳方法第一實(shí)施例的流程示意圖;圖6為本發(fā)明重啟日志歸并方法的數(shù)據(jù)傳輸流程示意圖;圖7為本發(fā)明實(shí)施例方法涉及的硬件運(yùn)行環(huán)境的設(shè)備結(jié)構(gòu)示意圖。本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。具體實(shí)施方式應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說明,其本身沒有特定的意義。因此,“模塊”、“部件”或“單元”可以混合地使用。終端可以以各種形式來實(shí)施。例如,本發(fā)明中描述的終端可以包括諸如手機(jī)、平板電腦、筆記本電腦、掌上電腦、個人數(shù)字助理(personaldigitalassistant,pda)、便捷式媒體播放器(portablemediaplayer,pmp)、導(dǎo)航裝置、可穿戴設(shè)備、智能手環(huán)、計步器等移動終端,以及諸如數(shù)字tv、臺式計算機(jī)等固定終端。后續(xù)描述中將以移動終端為例進(jìn)行說明,本領(lǐng)域技術(shù)人員將理解的是,除了特別用于移動目的的元件之外,根據(jù)本發(fā)明的實(shí)施方式的構(gòu)造也能夠應(yīng)用于固定類型的終端。請參閱圖1,其為實(shí)現(xiàn)本發(fā)明各個實(shí)施例的一種移動終端的硬件結(jié)構(gòu)示意圖,該移動終端100可以包括:rf(radiofrequency,射頻)單元101、wifi模塊102、音頻輸出單元103、a/v(音頻/視頻)輸入單元104、傳感器105、顯示單元106、用戶輸入單元107、接口單元108、存儲器109、處理器110、以及電源111等部件。本領(lǐng)域技術(shù)人員可以理解,圖1中示出的移動終端結(jié)構(gòu)并不構(gòu)成對移動終端的限定,移動終端可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。下面結(jié)合圖1對移動終端的各個部件進(jìn)行具體的介紹:射頻單元101可用于收發(fā)信息或通話過程中,信號的接收和發(fā)送,具體的,將基站的下行信息接收后,給處理器110處理;另外,將上行的數(shù)據(jù)發(fā)送給基站。通常,射頻單元101包括但不限于天線、至少一個放大器、收發(fā)信機(jī)、耦合器、低噪聲放大器、雙工器等。此外,射頻單元101還可以通過無線通信與網(wǎng)絡(luò)和其他設(shè)備通信。上述無線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于gsm(globalsystemofmobilecommunication,全球移動通訊系統(tǒng))、gprs(generalpacketradioservice,通用分組無線服務(wù))、cdma2000(codedivisionmultipleaccess2000,碼分多址2000)、wcdma(widebandcodedivisionmultipleaccess,寬帶碼分多址)、td-scdma(timedivision-synchronouscodedivisionmultipleaccess,時分同步碼分多址)、fdd-lte(frequencydivisionduplexing-longtermevolution,頻分雙工長期演進(jìn))和tdd-lte(timedivisionduplexing-longtermevolution,分時雙工長期演進(jìn))等。wifi屬于短距離無線傳輸技術(shù),移動終端通過wifi模塊102可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖1示出了wifi模塊102,但是可以理解的是,其并不屬于移動終端的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。音頻輸出單元103可以在移動終端100處于呼叫信號接收模式、通話模式、記錄模式、語音識別模式、廣播接收模式等等模式下時,將射頻單元101或wifi模塊102接收的或者在存儲器109中存儲的音頻數(shù)據(jù)轉(zhuǎn)換成音頻信號并且輸出為聲音。而且,音頻輸出單元103還可以提供與移動終端100執(zhí)行的特定功能相關(guān)的音頻輸出(例如,呼叫信號接收聲音、消息接收聲音等等)。音頻輸出單元103可以包括揚(yáng)聲器、蜂鳴器等等。a/v輸入單元104用于接收音頻或視頻信號。a/v輸入單元104可以包括圖形處理器(graphicsprocessingunit,gpu)1041和麥克風(fēng)1042,圖形處理器1041對在視頻捕獲模式或圖像捕獲模式中由圖像捕獲裝置(如攝像頭)獲得的靜態(tài)圖片或視頻的圖像數(shù)據(jù)進(jìn)行處理。處理后的圖像幀可以顯示在顯示單元106上。經(jīng)圖形處理器1041處理后的圖像幀可以存儲在存儲器109(或其它存儲介質(zhì))中或者經(jīng)由射頻單元101或wifi模塊102進(jìn)行發(fā)送。麥克風(fēng)1042可以在電話通話模式、記錄模式、語音識別模式等等運(yùn)行模式中經(jīng)由麥克風(fēng)1042接收聲音(音頻數(shù)據(jù)),并且能夠?qū)⑦@樣的聲音處理為音頻數(shù)據(jù)。處理后的音頻(語音)數(shù)據(jù)可以在電話通話模式的情況下轉(zhuǎn)換為可經(jīng)由射頻單元101發(fā)送到移動通信基站的格式輸出。麥克風(fēng)1042可以實(shí)施各種類型的噪聲消除(或抑制)算法以消除(或抑制)在接收和發(fā)送音頻信號的過程中產(chǎn)生的噪聲或者干擾。移動終端100還包括至少一種傳感器105,比如光傳感器、運(yùn)動傳感器以及其他傳感器。具體地,光傳感器包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板1061的亮度,接近傳感器可在移動終端100移動到耳邊時,關(guān)閉顯示面板1061和/或背光。作為運(yùn)動傳感器的一種,加速計傳感器可檢測各個方向上(一般為三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別手機(jī)姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計姿態(tài)校準(zhǔn))、振動識別相關(guān)功能(比如計步器、敲擊)等;至于手機(jī)還可配置的指紋傳感器、壓力傳感器、虹膜傳感器、分子傳感器、陀螺儀、氣壓計、濕度計、溫度計、紅外線傳感器等其他傳感器,在此不再贅述。顯示單元106用于顯示由用戶輸入的信息或提供給用戶的信息。顯示單元106可包括顯示面板1061,可以采用液晶顯示器(liquidcrystaldisplay,lcd)、有機(jī)發(fā)光二極管(organiclight-emittingdiode,oled)等形式來配置顯示面板1061。用戶輸入單元107可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與移動終端的用戶設(shè)置以及功能控制有關(guān)的鍵信號輸入。具體地,用戶輸入單元107可包括觸控面板1071以及其他輸入設(shè)備1072。觸控面板1071,也稱為觸摸屏,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸控面板1071上或在觸控面板1071附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動相應(yīng)的連接裝置。觸控面板1071可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給處理器110,并能接收處理器110發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實(shí)現(xiàn)觸控面板1071。除了觸控面板1071,用戶輸入單元107還可以包括其他輸入設(shè)備1072。具體地,其他輸入設(shè)備1072可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種,具體此處不做限定。進(jìn)一步的,觸控面板1071可覆蓋顯示面板1061,當(dāng)觸控面板1071檢測到在其上或附近的觸摸操作后,傳送給處理器110以確定觸摸事件的類型,隨后處理器110根據(jù)觸摸事件的類型在顯示面板1061上提供相應(yīng)的視覺輸出。雖然在圖1中,觸控面板1071與顯示面板1061是作為兩個獨(dú)立的部件來實(shí)現(xiàn)移動終端的輸入和輸出功能,但是在某些實(shí)施例中,可以將觸控面板1071與顯示面板1061集成而實(shí)現(xiàn)移動終端的輸入和輸出功能,具體此處不做限定。接口單元108用作至少一個外部裝置與移動終端100連接可以通過的接口。例如,外部裝置可以包括有線或無線頭戴式耳機(jī)端口、外部電源(或電池充電器)端口、有線或無線數(shù)據(jù)端口、存儲卡端口、用于連接具有識別模塊的裝置的端口、音頻輸入/輸出(i/o)端口、視頻i/o端口、耳機(jī)端口等等。接口單元108可以用于接收來自外部裝置的輸入(例如,數(shù)據(jù)信息、電力等等)并且將接收到的輸入傳輸?shù)揭苿咏K端100內(nèi)的一個或多個元件或者可以用于在移動終端100和外部裝置之間傳輸數(shù)據(jù)。存儲器109可用于存儲軟件程序以及各種數(shù)據(jù)。存儲器109可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)手機(jī)的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲器109可以包括高速隨機(jī)存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。處理器110是移動終端的控制中心,利用各種接口和線路連接整個移動終端的各個部分,通過運(yùn)行或執(zhí)行存儲在存儲器109內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器109內(nèi)的數(shù)據(jù),執(zhí)行移動終端的各種功能和處理數(shù)據(jù),從而對移動終端進(jìn)行整體監(jiān)控。處理器110可包括一個或多個處理單元;優(yōu)選的,處理器110可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖牵鲜稣{(diào)制解調(diào)處理器也可以不集成到處理器110中。移動終端100還可以包括給各個部件供電的電源111(比如電池),優(yōu)選的,電源111可以通過電源管理系統(tǒng)與處理器110邏輯相連,從而通過電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。盡管圖1未示出,移動終端100還可以包括藍(lán)牙模塊等,在此不再贅述。為了便于理解本發(fā)明實(shí)施例,下面對本發(fā)明的移動終端所基于的通信網(wǎng)絡(luò)系統(tǒng)進(jìn)行描述。請參閱圖2,圖2為本發(fā)明實(shí)施例提供的一種通信網(wǎng)絡(luò)系統(tǒng)架構(gòu)圖,該通信網(wǎng)絡(luò)系統(tǒng)為通用移動通信技術(shù)的lte系統(tǒng),該lte系統(tǒng)包括依次通訊連接的ue(userequipment,用戶設(shè)備)201,e-utran(evolvedumtsterrestrialradioaccessnetwork,演進(jìn)式umts陸地?zé)o線接入網(wǎng))202,epc(evolvedpacketcore,演進(jìn)式分組核心網(wǎng))203和運(yùn)營商的ip業(yè)務(wù)204。具體地,ue201可以是上述終端100,此處不再贅述。e-utran202包括enodeb2021和其它enodeb2022等。其中,enodeb2021可以通過回程(backhaul)(例如x2接口)與其它enodeb2022連接,enodeb2021連接到epc203,enodeb2021可以提供ue201到epc203的接入。epc203可以包括mme(mobilitymanagemententity,移動性管理實(shí)體)2031,hss(homesubscriberserver,歸屬用戶服務(wù)器)2032,其它mme2033,sgw(servinggateway,服務(wù)網(wǎng)關(guān))2034,pgw(pdngateway,分組數(shù)據(jù)網(wǎng)絡(luò)網(wǎng)關(guān))2035和pcrf(policyandchargingrulesfunction,政策和資費(fèi)功能實(shí)體)2036等。其中,mme2031是處理ue201和epc203之間信令的控制節(jié)點(diǎn),提供承載和連接管理。hss2032用于提供一些寄存器來管理諸如歸屬位置寄存器(圖中未示)之類的功能,并且保存有一些有關(guān)服務(wù)特征、數(shù)據(jù)速率等用戶專用的信息。所有用戶數(shù)據(jù)都可以通過sgw2034進(jìn)行發(fā)送,pgw2035可以提供ue201的ip地址分配以及其它功能,pcrf2036是業(yè)務(wù)數(shù)據(jù)流和ip承載資源的策略與計費(fèi)控制策略決策點(diǎn),它為策略與計費(fèi)執(zhí)行功能單元(圖中未示)選擇及提供可用的策略和計費(fèi)控制決策。ip業(yè)務(wù)204可以包括因特網(wǎng)、內(nèi)聯(lián)網(wǎng)、ims(ipmultimediasubsystem,ip多媒體子系統(tǒng))或其它ip業(yè)務(wù)等。雖然上述以lte系統(tǒng)為例進(jìn)行了介紹,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)知曉,本發(fā)明不僅僅適用于lte系統(tǒng),也可以適用于其他無線通信系統(tǒng),例如gsm、cdma2000、wcdma、td-scdma以及未來新的網(wǎng)絡(luò)系統(tǒng)等,此處不做限定。基于上述移動終端硬件結(jié)構(gòu)、通信裝置結(jié)構(gòu),提出本發(fā)明重啟日志歸并方法各實(shí)施例。參照圖3,本發(fā)明提供一種重啟日志歸并方法,在重啟日志歸并方法第一實(shí)施例中,該重啟日志歸并方法包括:步驟s10,接收并解析移動終端上傳的重啟日志,以獲取移動終端的重啟類型和重啟原因,并將重啟類型和重啟原因合并作為重啟關(guān)鍵字;本發(fā)明的技術(shù)方案應(yīng)用于服務(wù)器,當(dāng)使用android系統(tǒng)的移動終端因android框架出現(xiàn)異常發(fā)生系統(tǒng)重啟時,對生成的重啟日志進(jìn)行解析歸并,其中移動終端可以是使用android系統(tǒng)的手機(jī)、平板電腦等。android是基于linux的操作系統(tǒng),linux操作系統(tǒng)對于每個程序來說,有兩個cpu運(yùn)行狀態(tài),一個是在用戶空間運(yùn)行,另一個是在內(nèi)核空間運(yùn)行。用戶空間是指各個程序自身代碼運(yùn)行的獨(dú)立空間,如qq程序運(yùn)行的空間與微信程序運(yùn)行的空間相互獨(dú)立。內(nèi)核空間是運(yùn)行操作系統(tǒng)的空間,是各個程序共享的,如qq和微信的內(nèi)核空間共享同一個操作系統(tǒng)空間。在程序開發(fā)過程中,用日志(log)來記錄程序執(zhí)行過程,android為用戶空間的程序開發(fā)人員提供了輕量級的logger日志系統(tǒng),該日志系統(tǒng)通過驅(qū)動程序驅(qū)動的方式在內(nèi)核空間中運(yùn)行,產(chǎn)生的log是以設(shè)備文件的形式存儲在文件夾/dev/log/中。該日志系統(tǒng)提供了寫log到設(shè)備文件和從設(shè)備文件中讀log接口,用戶空間提供了使用logger日志系統(tǒng)的java接口和c/c++接口,通過java接口和c/c++接口開發(fā)可采用java和c/c++的方式編程,實(shí)現(xiàn)寫log到設(shè)備文件和從設(shè)備文件中讀log接口。其中l(wèi)og文件的寫入是android框架層代碼通過jni調(diào)用系統(tǒng)運(yùn)行庫,并通過系統(tǒng)運(yùn)行庫將log寫入設(shè)備文件中;log文件的讀取則是通過android提供的logcat工具進(jìn)行抓取的,logcat工具根據(jù)開發(fā)人員輸入的命令從設(shè)備文件中讀取log,并根據(jù)開發(fā)人員的要求將經(jīng)過格式化的log信息輸出。因在程序開發(fā)過程中,設(shè)置有l(wèi)og記錄程序執(zhí)行過程的機(jī)制,表征移動終端當(dāng)前的狀態(tài),所以在程序執(zhí)行過程中出現(xiàn)異常,導(dǎo)致移動終端系統(tǒng)重啟時,此導(dǎo)致重啟的異常原因會被log記錄生成重啟日志。本實(shí)施例中主要涉及android框架出現(xiàn)異常導(dǎo)致zygote重啟,其中android框架是支持android運(yùn)行的所有基礎(chǔ)代碼。移動終端上安裝的所有應(yīng)用程序,例如qq、微信等都需要框架功能支撐才能夠正常運(yùn)行。而zygote用于創(chuàng)建android的應(yīng)用程序的進(jìn)程,應(yīng)用程序在啟動準(zhǔn)備運(yùn)行之前,先復(fù)制一份zygote,才能正常運(yùn)行。當(dāng)android框架出現(xiàn)異常時,則包括qq和微信在內(nèi)的所有應(yīng)用都會殺死,導(dǎo)致zygote重啟,開機(jī)畫面重播。此時logcat工具抓取異常信息,生成重啟日志上傳到服務(wù)器,以供相關(guān)開發(fā)人員根據(jù)此重啟日志分析獲知引起重啟的原因,對系統(tǒng)進(jìn)行優(yōu)化。在接收到移動終端上傳的重啟日志后,對此重啟日志進(jìn)行解析,以獲取引起重啟的重啟類型(reboottype)以及重啟原因(reason)??衫斫獾兀蛞苿咏K端上資源有限,而應(yīng)用程序卻有多種,android框架作為移動終端上所有應(yīng)用程序運(yùn)行的支撐,需要協(xié)調(diào)移動終端中的各種資源以支撐多種應(yīng)用程序的正常運(yùn)行。因而當(dāng)android框架出現(xiàn)異常導(dǎo)致zygote重啟時,其異常的種類也各異,所以需要對接受到的重啟日志解析,以獲取引起系統(tǒng)重啟的異常類型以及對應(yīng)產(chǎn)生此異常類型的原因,即獲取某類異常引起移動終端重啟的重啟類型及對應(yīng)的重啟原因,并將此重啟類型及對應(yīng)的重啟原因合并作為重啟關(guān)鍵字,以根據(jù)重啟關(guān)鍵字確定是否為新的重啟原因類型引起的系統(tǒng)重啟。步驟s20,判斷重啟問題數(shù)據(jù)庫中是否存在所述重啟關(guān)鍵字;進(jìn)一步地,在將重啟類型及對應(yīng)的重啟原因合并得到重啟關(guān)鍵字之后,將此重啟關(guān)鍵字和重啟問題數(shù)據(jù)庫中的數(shù)據(jù)比較,以判斷重啟問題數(shù)據(jù)庫中是否已經(jīng)存在此重啟關(guān)鍵字。重啟問題數(shù)據(jù)庫為專門用于存儲重啟關(guān)鍵字的數(shù)據(jù)庫,可采用隊(duì)列的形式存儲,因隊(duì)列是先進(jìn)先出的線性表,從而按照進(jìn)入隊(duì)列的先后順序,對先進(jìn)入隊(duì)列的重啟關(guān)鍵字進(jìn)行處理,提高處理效率。初始時,重啟數(shù)據(jù)庫中沒有數(shù)據(jù),即沒有重啟關(guān)鍵字,當(dāng)接收到重啟日志,將重啟日志中的重啟類型和重啟原因合并得到重啟關(guān)鍵字,并將此重啟關(guān)鍵字添加到重啟問題數(shù)據(jù)庫中作為其第一個數(shù)據(jù)。此后當(dāng)再次接收到重啟日志時,將其對應(yīng)的重啟關(guān)鍵字和第一個數(shù)據(jù)比較,判斷是否相同。隨著重啟問題數(shù)據(jù)庫中的重啟關(guān)鍵字增加,可采用遍歷的方式,將合并得到的重啟關(guān)鍵字和重啟問題數(shù)據(jù)庫中的重啟關(guān)鍵字逐一比較,確定此合并得到的重啟關(guān)鍵字已經(jīng)存在于重啟問題數(shù)據(jù)庫中。步驟s30,當(dāng)重啟問題數(shù)據(jù)庫中不存在所述重啟關(guān)鍵字時,將所述重啟日志作為一類新的重啟原因類型存儲,并將所述重啟關(guān)鍵字添加到重啟問題數(shù)據(jù)庫以與新的重啟原因類型關(guān)聯(lián)存儲。更進(jìn)一步地,當(dāng)判斷出合并得到的重啟關(guān)鍵字不在重啟問題數(shù)據(jù)庫中時,說明系統(tǒng)重啟由一種新的原因引起,將此重啟關(guān)鍵字對應(yīng)的重啟日志作為一類新的原因類型存儲,并將此重啟關(guān)鍵字添加到重啟問題數(shù)據(jù)庫以與新的重啟原因類型關(guān)聯(lián)存儲。因只有當(dāng)重啟數(shù)據(jù)庫中不存在合并得到的重啟關(guān)鍵字,才將此重啟關(guān)鍵字添加到重啟問題數(shù)據(jù)庫中,從而使重啟問題數(shù)據(jù)庫中存儲的重啟關(guān)鍵字都不相同。一個重啟關(guān)鍵字可以對應(yīng)多份重啟日志,不同的重啟日志中獲取的重啟類型和重啟原因都相同,即可得到相同的重啟關(guān)鍵字。對于此種重啟日志不同。而重啟關(guān)鍵字相同的類型,開發(fā)人員根據(jù)此重啟關(guān)鍵字即可獲知引起重啟的類型以及原因,而不用對所有的重啟日志分析,在很大程度上提高了分析效率,加快了對系統(tǒng)優(yōu)化的進(jìn)程。在本實(shí)施例的重啟日志歸并方法包括:接收并解析移動終端上傳的重啟日志,以獲取移動終端的重啟類型和重啟原因,并將重啟類型和重啟原因合并作為重啟關(guān)鍵字;判斷重啟問題數(shù)據(jù)庫中是否存在所述重啟關(guān)鍵字;當(dāng)重啟問題數(shù)據(jù)庫中不存在所述重啟關(guān)鍵字時,將所述重啟日志作為一類新的重啟原因類型存儲,并將所述重啟關(guān)鍵字添加到重啟問題數(shù)據(jù)庫以與新的重啟原因類型關(guān)聯(lián)存儲。本方案通過將重啟類型和重啟原因合并得到的重啟關(guān)鍵字和重啟問題數(shù)據(jù)庫中的重啟關(guān)鍵字比較,判斷重啟數(shù)據(jù)庫中是否已經(jīng)存在此合并得到的重啟關(guān)鍵字,當(dāng)不存在時,則說明出現(xiàn)一類新的重啟關(guān)鍵字,將重啟日志作為一類新的重啟原因類型存儲,并將重啟關(guān)鍵字添加到重啟問題數(shù)據(jù)庫以與新的重啟原因類型關(guān)聯(lián)存儲。從而重啟數(shù)據(jù)庫中存儲有多種不同類型的重啟關(guān)鍵字,開發(fā)人員只需要分析重啟問題數(shù)據(jù)庫中的不同類型的重啟關(guān)鍵字即可了解引起系統(tǒng)重啟的原因,避免對重復(fù)類型的重啟日志分析,減少工作量,提高了分析效率。進(jìn)一步地,請參照圖4,在本發(fā)明重啟日志歸并方法第一實(shí)施例的基礎(chǔ)上,提出重啟日志歸并方法的第二實(shí)施例,在第二實(shí)施例中,所述判斷重啟問題數(shù)據(jù)庫中是否存在所述重啟關(guān)鍵字的步驟之后包括包括:步驟s40,當(dāng)重啟問題數(shù)據(jù)庫中存在所述重啟關(guān)鍵字時,將重啟關(guān)鍵字對應(yīng)的重啟日志歸入原有的重啟原因類型,并將重啟關(guān)鍵字對應(yīng)的重啟日志數(shù)量更新。進(jìn)一步地,當(dāng)判斷出合并得到的重啟關(guān)鍵字存在于重啟問題數(shù)據(jù)庫中時,說明系統(tǒng)重啟的原因已經(jīng)存在,將此重啟關(guān)鍵字對應(yīng)的重啟日志歸并為原有的重啟原因類型。因?yàn)橄到y(tǒng)重啟的原因已經(jīng)存在,則開發(fā)人員已經(jīng)對此原因進(jìn)行過分析,當(dāng)再次出現(xiàn)時,只需要確定其和已經(jīng)存在的哪個重啟原因類型對應(yīng)即可知道引起重啟的類重啟型和重啟原因,不需要再次分析。將此重啟關(guān)鍵字對應(yīng)的重啟日志數(shù)量更新,當(dāng)再出現(xiàn)一個相同的重啟關(guān)鍵字時,則將重啟日志的數(shù)量加一,根據(jù)此重啟日志數(shù)量即可獲知市面上由此重啟原因類型引起系統(tǒng)重啟的數(shù)量和比例,以更好的對系統(tǒng)進(jìn)行優(yōu)化,通過將由相同原因?qū)е碌闹貑w并為相同類型,避免了開發(fā)人員的再次分析,降低了工作量,避免人力資源的消耗,提高了分析效率。進(jìn)一步地,在本發(fā)明重啟日志歸并方法另一實(shí)施例中,所述接收并解析移動終端上傳的重啟日志,以獲取重啟類型和重啟原因的步驟包括:步驟s21,接收移動終端上傳的重啟日志,并對重啟日志中的崩潰日志和系統(tǒng)日志解析以獲取重啟類型;步驟s22,根據(jù)所述重啟類型的分類,獲取分類對應(yīng)的重啟原因。在本實(shí)施例中,移動終端上傳的重啟日志包括追蹤文件和安卓日志(androidlog),trace文件為從一個時間點(diǎn)到另一個時間點(diǎn)之間的時間段內(nèi)的移動終端中應(yīng)用程序信息,表征時間段內(nèi)的移動終端運(yùn)行狀態(tài),出現(xiàn)重啟時,會打印trace堆棧狀態(tài)。androidlog為當(dāng)前移動終端中應(yīng)用程序信息,表征目標(biāo)移動終端的運(yùn)行狀態(tài),具有實(shí)時性。androidlog包括崩潰日志(androidcrashlog)和系統(tǒng)日志(androidsystemlog),崩潰日志用于表征框架程序崩潰引起的重啟,系統(tǒng)日志用于表征系統(tǒng)服務(wù)未響應(yīng)引起的重啟。當(dāng)接收到移動終端上傳的重啟日志后,對重啟日志中的崩潰日志和系統(tǒng)日志解析,以確定重啟類型是框架類型還是系統(tǒng)服務(wù)類型??衫斫獾?,引起框架崩潰和服務(wù)未響應(yīng)的原因有多種,諸如死鎖、空指針、死循環(huán)等,所以需要根據(jù)重啟類型的類別,對其分析獲取此重啟分類引起重啟的重啟原因,以便根據(jù)重啟類型和重啟原因得到重啟關(guān)鍵字。更進(jìn)一步地,在本發(fā)明重啟日志歸并方法另一實(shí)施例中,所述對重啟日志中的崩潰日志和系統(tǒng)日志解析以獲取重啟類型的步驟包括:步驟s211,判斷崩潰日志中是否存在第一字符串,當(dāng)存在第一字符串時,判定重啟類型為第一類重啟;步驟s212,判斷崩潰日志中是否存在第二字符串,當(dāng)存在第二字符串時,判定重啟類型為第二類重啟;步驟s213,判斷系統(tǒng)日志中是否存在第三字符串,當(dāng)存在第三字符串時,判定重啟類型為第三類重啟。進(jìn)一步地,框架程序崩潰引起的重啟包括框架java層程序崩潰和框架native層程序崩潰,系統(tǒng)服務(wù)未響應(yīng)引起的重啟是由于服務(wù)未響應(yīng),watchdag主動殺死系統(tǒng)服務(wù)引起的??蚣躩ava層程序是移動終端應(yīng)用程序正常運(yùn)行的支撐,當(dāng)其出現(xiàn)異常崩潰時,移動終端的應(yīng)用程序不能正常運(yùn)行,出現(xiàn)重啟。框架native層程序用于實(shí)現(xiàn)java調(diào)用非java代碼的接口功能,其由非java語言實(shí)現(xiàn),比如c或c++。因android系統(tǒng)是基于linux的,linux由非java的c建立,當(dāng)native層出現(xiàn)異常崩潰時,不能調(diào)用非java代碼,從而導(dǎo)致android系統(tǒng)出現(xiàn)異常重啟。watchdog是linux看門狗,用于監(jiān)視系統(tǒng)的運(yùn)行。通過在內(nèi)核中啟動預(yù)設(shè)時間的定時器,用戶空間程序需要在預(yù)設(shè)時間內(nèi)向移動終端寫入數(shù)據(jù),每次寫操作會導(dǎo)致重新設(shè)定定時器。如果用戶空間程序在預(yù)設(shè)時間內(nèi)沒有寫操作,定時器到期會導(dǎo)致系統(tǒng)重啟。本實(shí)施例中將框架java層程序崩潰導(dǎo)致的重啟類型作為第一類重啟,框架native層程序崩潰導(dǎo)致的重啟類型作為第二類重啟,服務(wù)未響應(yīng),watchdag主動殺死系統(tǒng)服務(wù)導(dǎo)致的重啟類型作為第三類重啟。且可采用遍歷崩潰日志和系統(tǒng)日志中字符串的方式來判斷是哪一類重啟,具體地,當(dāng)檢測到崩潰日志中存在“***fatalexceptioninsystemprocess”字符串時,即說明出現(xiàn)框架java層程序崩潰導(dǎo)致的重啟即第一類重啟,并將此字符串作為第一字符串。當(dāng)檢測到崩潰日志中存在“>>>system_server<<<或>>>zygote*<<<”字符串時,即說明出現(xiàn)框架native層程序崩潰導(dǎo)致的重啟即第二類重啟,并將此字符串作為第二字符串。當(dāng)檢測到系統(tǒng)日志中存在“***watchdogkillingsystemprocess”字符串時,即說明出現(xiàn)服務(wù)未響應(yīng),watchdog主動殺死系統(tǒng)服務(wù)導(dǎo)致的重啟即第三類重啟,并將此字符串作為第三字符串。當(dāng)接收到移動終端上傳的重啟日志,對重啟日志中的崩潰日志和系統(tǒng)日志解析后,遍歷崩潰日志和系統(tǒng)日志中字符串。判斷崩潰日志中是否存在第一字符串,當(dāng)存在第一字符串時,判定引起移動終端重啟的重啟類型為第一類重啟,即框架java層程序崩潰引起移動終端重啟,獲取第一類重啟的重啟信息,諸如框架java層程序崩潰的時間、引起其崩潰的進(jìn)程命名、進(jìn)程號以及堆棧此類信息。當(dāng)不存在第一字符串時,則判斷崩潰日志中是否存在第二字符串,當(dāng)存在第二字符串時,判定引起移動終端重啟的重啟類型為第二類重啟,即框架native層程序崩潰引起移動終端重啟,獲取第二類重啟的重啟信息,諸如框架native層程序崩潰的時間、引起其崩潰的進(jìn)程命名、進(jìn)程號以及堆棧此類信息。當(dāng)?shù)诙址膊淮嬖跁r,則判斷系統(tǒng)日志中是否存在第三字符串,當(dāng)存在第三字符串時,判定引起移動終端重啟的重啟類型為第三類重啟,即服務(wù)未響應(yīng),watchdag主動殺死系統(tǒng)服務(wù)引起移動終端重啟,獲取第三類重啟的重啟信息,諸如服務(wù)未響應(yīng)的時間、引起其未響應(yīng)的進(jìn)程命名、進(jìn)程號以及堆棧此類信息。其中對崩潰日志和系統(tǒng)日志遍歷以判斷是否存在第一字符串、第二字符串和第三字符串的順序可根據(jù)遍歷規(guī)則確定,可設(shè)置先判斷第二字符串也可先判斷第三字符串,對此不作限定。進(jìn)一步地,在本發(fā)明重啟日志歸并方法另一實(shí)施例中,所述根據(jù)所述重啟類型的分類,獲取分類對應(yīng)的重啟原因的步驟包括:步驟s221,當(dāng)重啟類型為第一類重啟時,根據(jù)第一類重啟的重啟信息確定第一重啟原因;步驟s222,當(dāng)重啟類型為第二類重啟時,根據(jù)第二類重啟的重啟信息確定第二重啟原因;步驟s223,當(dāng)重啟類型為第三類重啟時,根據(jù)第三類重啟的重啟信息確定第三重啟原因。更進(jìn)一步地,當(dāng)判定引起移動終端重啟的重啟類型為第一類重啟,即框架java層程序崩潰引起移動終端重啟時,根據(jù)第一類重啟的重啟信息中包含的框架java層程序崩潰的時間、引起其崩潰的進(jìn)程命名、進(jìn)程號以及堆棧等信息確定導(dǎo)致第一類重啟發(fā)生的第一重啟原因。此外當(dāng)判定引起移動終端重啟的重啟類型為第二類重啟,即框架native層程序崩潰引起移動終端重啟時,根據(jù)第二類重啟的重啟信息中包含的框架native層程序崩潰的時間、引起其崩潰的進(jìn)程命名、進(jìn)程號以及堆棧等信息確定導(dǎo)致第二類重啟發(fā)生的第二重啟原因??蚣躩ava層程序崩潰和框架native層程序崩潰主要由空指針和死循環(huán)引起,因而根據(jù)第一重啟的重啟信息確定第一重啟原因?yàn)榭罩羔樆蛩姥h(huán)或者根據(jù)第二重啟的重啟信息確定第一重啟原因?yàn)榭罩羔樆蛩姥h(huán)。而當(dāng)判定引起移動終端重啟的重啟類型為第三類重啟,即服務(wù)未響應(yīng),watchdag主動殺死系統(tǒng)服務(wù)引起移動終端重啟時,根據(jù)第三類重啟的重啟信息中包含的服務(wù)未響應(yīng)的時間、引起其未響應(yīng)的進(jìn)程命名、進(jìn)程號以及堆棧等信息確定導(dǎo)致第三類重啟發(fā)生的第三重啟原因。因涉及到系統(tǒng)服務(wù)的線程眾多,從而引起第三類重啟發(fā)生的第三重啟原因的類型也很多。具體的,本實(shí)施例涉及到:一、當(dāng)前在查找的線程與之前查找過的線程分別持有對方等待的資源鎖,導(dǎo)致死鎖,線程不能獲得其需要的資源,服務(wù)未響應(yīng),watchdag主動殺死系統(tǒng)服務(wù),此時將死鎖鏈上的線程名稱組合,作為引起發(fā)生第三類重啟的第三重啟原因。二、當(dāng)前在查找的線程正在binder其他進(jìn)程的線程,此時binder服務(wù)器的進(jìn)程占用當(dāng)前在查找的線程資源,使當(dāng)前在查找的線程不能處理其自身線程,等待時間較長,服務(wù)未響應(yīng),watchdag主動殺死系統(tǒng)服務(wù)。binder服務(wù)端的進(jìn)程名稱和線程最后一行為當(dāng)前正在占用資源的進(jìn)程和線程,因而將binder服務(wù)端的進(jìn)程名稱和線程最后一行調(diào)用棧名稱作為引起發(fā)生第三類重啟的第三重啟原因。三、若當(dāng)前在查找的線程沒有binder其他進(jìn)程的線程,而其自身又處于等待不運(yùn)行狀態(tài),則由其自身的原因引起等待時間長服務(wù)未響應(yīng),watchdag主動殺死系統(tǒng)服務(wù),則將當(dāng)前線程最后一行調(diào)用棧信息作為引起發(fā)生第三類重啟的第三重啟原因。在獲取重啟類型及對應(yīng)的重啟原因后,將重啟類型和重啟原因合并作為重啟關(guān)鍵字的步驟包括:步驟a,將第一類重啟和第一重啟原因合并作為第一重啟關(guān)鍵字;步驟b,將第二類重啟和第二重啟原因合并作為第二重啟關(guān)鍵字;步驟c,將第三類重啟和第三重啟原因合并作為第三重啟關(guān)鍵字。在確定引起移動終端重啟的重啟類型為第一類重啟,并根據(jù)第一類重啟的重啟信息確定引起第一類重啟發(fā)生的第一重啟原因后,將第一類重啟和第一重啟原因合并作為第一重啟關(guān)鍵字。同樣的,在確定引起移動終端重啟的重啟類型為第二類重啟,并根據(jù)第二類重啟的重啟信息確定引起第二類重啟發(fā)生的第二重啟原因后,將第二類重啟和第二重啟原因合并作為第二重啟關(guān)鍵字。因第一重啟原因和第二重啟原因可能相同,都是由空指針或死循環(huán)引起,而第一類重啟和第二類重啟不相同,通過使由第一類重啟和第一重啟原因合并而成的第一重啟關(guān)鍵字,不同于由第二類重啟和第二重啟原因合并而成的第二重啟關(guān)鍵字。此外在確定引起移動終端重啟的重啟類型為第三類重啟,并根據(jù)第三類重啟的重啟信息確定引起第三類重啟發(fā)生的第三重啟原因后,將第三類重啟和第三重啟原因合并作為第三重啟關(guān)鍵字。其中重啟類型(reboottype)和重啟原因(reason)都以字符串的形式存在,從而其合并而成的關(guān)鍵字(reboottype+reason)也以字符串的形式存在。為輔助理解,以一具體實(shí)施例加以說明,在接收移動終端上傳的重啟日志,并解析獲得其中的崩潰日志和系統(tǒng)日志后,開始執(zhí)行本實(shí)施例的重啟日志歸并方法。請參照圖6:步驟s110,遍歷crashlog和systemlog文件,進(jìn)入步驟120。步驟s120,讀取crashlog和systemlog文件中的下一行字符串,并判斷crashlog和systemlog文件中字符串是否讀取結(jié)束,未讀取結(jié)束則進(jìn)入步驟130,讀取結(jié)束則進(jìn)入步驟190。步驟s130,判斷當(dāng)前字符串是否包含***fatalexceptioninsystemprocess的字符串,如果包含此字符串,則說明為框架java層代碼崩潰導(dǎo)致android重啟,即第一類重啟,進(jìn)入步驟140;否則進(jìn)入步驟150。步驟s140,收集重啟類型reboottype為框架java層代碼崩潰(java_crash)的異常時間、進(jìn)程名稱、進(jìn)程號及堆棧,繼續(xù)進(jìn)入步驟120。步驟s150,判斷當(dāng)前字符串是否包含>>>system_server<<<或>>>zygote*<<<的字符串,如果包含此字符串,則說明為框架native層代碼崩潰導(dǎo)致android重啟即第二類重啟,進(jìn)入步驟160;否則進(jìn)入步驟170。步驟s160,收集重啟類型reboottype為框架native層代碼崩潰(native_crash)的異常時間,進(jìn)程名稱,進(jìn)程號及堆棧;繼續(xù)進(jìn)入步驟120。步驟s170,判斷當(dāng)前字符串是否包含***watchdogkillingsystemprocess的字符串,如果包含此字符串,則說明為由于服務(wù)未響應(yīng),watchdog主動殺死系統(tǒng)服務(wù)導(dǎo)致android重啟即第三類重啟,進(jìn)入步驟180;否則進(jìn)入步驟120。步驟s180,收集重啟類型reboottype為服務(wù)未響應(yīng),watchdog主動殺死系統(tǒng)服務(wù)(watchdog)的異常時間,進(jìn)程名稱,進(jìn)程號及堆棧;繼續(xù)進(jìn)入步驟120。步驟s190,獲取異常時間最后一個重啟數(shù)據(jù),繼續(xù)進(jìn)入步驟200。步驟s200,判斷重啟類型reboottype是否為watchdog,否則進(jìn)入步驟210;是則進(jìn)入步驟230。步驟s210,進(jìn)一步判斷重啟類型reboottype是否為java_crash,否則進(jìn)入步驟220;是則進(jìn)入步驟310。步驟s220,當(dāng)重啟類型reboottype為native_crash時,則進(jìn)入步驟320。步驟s230,通過進(jìn)程號(pid)查找traces日志文件中對應(yīng)的進(jìn)程名稱對應(yīng)的堆棧狀態(tài),首先查找main主線程狀態(tài)。進(jìn)入步驟240。步驟s240,判斷當(dāng)前在查找的線程與之前查找過的線程是否分別持有對方等待的資源鎖,導(dǎo)致死鎖;若沒有分別持有對方等待的資源鎖則進(jìn)入步驟250,若分別持有對方等待的資源鎖則進(jìn)入步驟300。步驟s250,判斷當(dāng)前在查找的線程是否在等待其他線程持有的資源鎖;是則進(jìn)入步驟260,否則進(jìn)入步驟270。步驟s260,查找持有鎖的線程狀態(tài),重新進(jìn)入步驟240。步驟s270,判斷當(dāng)前在查找的線程是否正在binder其他進(jìn)程的線程;是則進(jìn)入步驟280,否則進(jìn)入步驟290。步驟s280,將binder服務(wù)端的進(jìn)程名稱和線程最后一行調(diào)用棧名稱作為reason,進(jìn)入步驟330。步驟s290,將當(dāng)前線程最后一行調(diào)用棧信息作為reason,進(jìn)入步驟330。步驟s300,將死鎖鏈上的線程名稱組合,作為reason,進(jìn)入步驟330。步驟230~步驟s300的釋義為:當(dāng)重啟類型為第三類重啟,即服務(wù)未響應(yīng),watchdag主動殺死系統(tǒng)服務(wù)的重啟類型時,通過進(jìn)程號(pid)查找traces日志文件中對應(yīng)的進(jìn)程名稱對應(yīng)的堆棧狀態(tài),且首先查找main主線程狀態(tài),以確定導(dǎo)致服務(wù)器未響應(yīng)的線程。進(jìn)程用于將系統(tǒng)的工作劃分為功能單元,線程為進(jìn)程內(nèi)的執(zhí)行單元,是進(jìn)程內(nèi)的可調(diào)度實(shí)體,一個程序至少有一個進(jìn)程,一個進(jìn)程至少有一個線程。traces文件中包含進(jìn)程和進(jìn)程中的線程的所有堆棧和進(jìn)程狀態(tài)信息,用于追蹤系統(tǒng)中進(jìn)程的狀態(tài),當(dāng)出現(xiàn)android重啟時,會打印出traces堆棧狀態(tài)。main主線程是指第一個運(yùn)行的線程,其他的新建線程由main主線程給其他的信件線程分配任務(wù)。所以mian主線程如果阻塞的話,其他線程則相應(yīng)的不能運(yùn)行,整個進(jìn)程是處于阻塞狀態(tài),無法繼續(xù)工作。通過首先查找main主線程狀態(tài),在確保main主線程不阻塞的情況下,再進(jìn)行其他線程的工作情況,以逐步查找產(chǎn)生重啟的原因。因線程需要借助系統(tǒng)的其他資源才能運(yùn)行,但系統(tǒng)資源有限,可能被其他線程占用,所以需判斷當(dāng)前在查找的線程與之前查找過的線程是否分別持有對方等待的資源鎖,當(dāng)雙方分別持有對方等待的資源鎖時,則雙方均不能運(yùn)行導(dǎo)致死鎖,服務(wù)堵塞未響應(yīng),此時將死鎖鏈上的線程名稱組合作為第三重啟原因。若雙方?jīng)]有分別持有對方等待的資源鎖時,則進(jìn)一步判斷當(dāng)前在查找的線程是否在等待其他線程持有的資源鎖。當(dāng)當(dāng)前在查找的線程運(yùn)行需要其他線程的資源鎖的支持,等待其他線程的資源鎖時,則查找其他線程持有的資源鎖的線程狀態(tài),若其他線程持有的資源鎖正在使用,使當(dāng)前查找的線程的等待時間過長,服務(wù)較長時間未響應(yīng),也判定為死鎖,將死鎖鏈上的線程名稱組合作為第三重啟原因。當(dāng)當(dāng)前在查找的線程運(yùn)行不需要其他線程的資源鎖的支持時,則更進(jìn)一步判斷當(dāng)前在查找的線程正在binder其他進(jìn)程的線程,當(dāng)當(dāng)前在查找的線程在binder其他進(jìn)程的線程時,binder服務(wù)器的進(jìn)程占用當(dāng)前在查找的線程資源,使當(dāng)前在查找的線程不能處理其自身線程,等待時間較長,服務(wù)未響應(yīng),watchdag主動殺死系統(tǒng)服務(wù)。此時binder服務(wù)端的進(jìn)程名稱和線程最后一行為當(dāng)前正在占用資源的進(jìn)程和線程,因而將binder服務(wù)端的進(jìn)程名稱和線程最后一行調(diào)用棧名稱作為第三重啟原因。當(dāng)當(dāng)前在查找的線程沒有binder其他進(jìn)程的線程時,也沒有出現(xiàn)死鎖現(xiàn)象,而其服務(wù)器還是沒有響應(yīng),則說明是由其自身的原因引起的等待時間長,服務(wù)未響應(yīng),應(yīng)將當(dāng)前線程最后一行調(diào)用棧信息作為引起發(fā)生第三類重啟的第三重啟原因。步驟s310,將java崩潰堆棧信息作為reason,進(jìn)入步驟330。當(dāng)重啟類型為第一類重啟,即框架java層程序崩潰引起移動終端重啟時,將java崩潰堆棧信息作為第一重啟原因。步驟s320,將native崩潰堆棧信息作為reason,進(jìn)入步驟330。當(dāng)重啟類型為第二類重啟,即框架native層程序崩潰引起移動終端重啟時,將nativea崩潰堆棧信息作為第二重啟原因。步驟s300,在已有重啟問題數(shù)據(jù)庫中查找是否包含reboottype+reason的字符串,是則進(jìn)入步驟340,否則進(jìn)入步驟350。步驟s340,將該重啟日志作為已有重啟日志處理,結(jié)束。步驟s350,將reboottype+reason添加到重啟問題數(shù)據(jù)庫中,并將該重啟日志作為新的重啟原因處理,結(jié)束。參照圖5,本發(fā)明提供一種重啟日志上傳方法,在重啟日志上傳方法第一實(shí)施例中,該重啟日志歸并方法包括:步驟s50,設(shè)置重啟標(biāo)識符,當(dāng)檢測到移動終端出現(xiàn)重啟時,判斷重啟標(biāo)識符是否等于預(yù)設(shè)值;步驟s60,當(dāng)重啟標(biāo)識符等于預(yù)設(shè)值時,抓取重啟日志,并將所述重啟日志上傳至服務(wù)器。本發(fā)明的技術(shù)方案應(yīng)用于移動終端,當(dāng)其出現(xiàn)android框架異常,導(dǎo)致重啟時,將重啟日志上傳至服務(wù)器。android系統(tǒng)是基于linux的,linux中有init進(jìn)程,是linux系統(tǒng)上的第一個用戶進(jìn)程,用戶為root,擁有系統(tǒng)中最高的權(quán)限,通過解析init.rc文件啟動zygote進(jìn)程。在init.rc文件啟動zygote進(jìn)程之前設(shè)置重啟標(biāo)識符(sys.android.reboot),并將此重啟標(biāo)識符的屬性值設(shè)置為預(yù)設(shè)值。具體地,可將其屬性值預(yù)設(shè)為0,并在zygoteservice定義中添加重啟設(shè)置值標(biāo)記onrestart設(shè)置sys.android.reboot屬性值預(yù)設(shè)為1。經(jīng)過上述處理,系統(tǒng)正常啟動時sys.android.reboot屬性值為0,如果android出現(xiàn)重啟則sys.android.reboot屬性值為1。當(dāng)檢測到移動終端出現(xiàn)重啟(android重啟)時,判斷重啟標(biāo)識符(sys.android.reboot)的屬性值是否等于預(yù)設(shè)值。其中當(dāng)重啟標(biāo)識符等于預(yù)設(shè)值時,抓取重啟日志,并將所述重啟日志上傳至服務(wù)器的步驟包括:步驟m,當(dāng)重啟標(biāo)識符等于預(yù)設(shè)值時,生成框架異常廣播;步驟n,將所述框架異常廣播發(fā)送到日志系統(tǒng),以供日志系統(tǒng)基于框架異常廣播抓取重啟日志,并將所述重啟日志上傳至服務(wù)器。更進(jìn)一步地,當(dāng)判斷出重啟標(biāo)識符等于預(yù)設(shè)值時,判定為移動終端android框架異常引起的重啟,此時生成框架異常廣播。通過android框架將此廣播發(fā)送到log日志系統(tǒng),log日志系統(tǒng)在接收到此廣播后,通過logcat工具抓取包括trace文件和androidlog的重啟日志,并將此重啟日志上傳至服務(wù)器。參照圖7,圖7是本發(fā)明實(shí)施例方法涉及的硬件運(yùn)行環(huán)境的設(shè)備結(jié)構(gòu)示意圖。本發(fā)明實(shí)施例重啟日志歸并系統(tǒng)包括交互的服務(wù)器和移動終端,服務(wù)器可以網(wǎng)站,移動終端可以是pc,也可以是智能手機(jī)、平板電腦便攜計算機(jī)等終端設(shè)備。如圖7所示,該重啟日志歸并系統(tǒng)可以包括:處理器110,例如cpu,存儲器109,通信總線1002,且處理器110和存儲器109可以存在于服務(wù)器、也可以存在于移動終端、還可以服務(wù)器和移動終端都存在。其中,通信總線1002用于實(shí)現(xiàn)處理器110和存儲器109之間的連接通信。存儲器109可以是高速ram存儲器,也可以是穩(wěn)定的存儲器(non-volatilememory),例如磁盤存儲器。存儲器109可選的還可以是獨(dú)立于前述處理器110的存儲裝置??蛇x地,該重啟日志歸并系統(tǒng)還可以包括用戶接口、網(wǎng)絡(luò)接口、攝像頭、rf(radiofrequency,射頻)電路,傳感器、音頻電路、wifi模塊等等。用戶接口可以包括顯示屏(display)、輸入單元比如鍵盤(keyboard),可選用戶接口還可以包括標(biāo)準(zhǔn)的有線接口、無線接口。網(wǎng)絡(luò)接口可選的可以包括標(biāo)準(zhǔn)的有線接口、無線接口(如wi-fi接口)。本領(lǐng)域技術(shù)人員可以理解,圖7中示出的重啟日志歸并系統(tǒng)結(jié)構(gòu)并不構(gòu)成對重啟日志歸并系統(tǒng)的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。如圖7所示,作為一種計算機(jī)存儲介質(zhì)的存儲器109中可以包括操作系統(tǒng)、網(wǎng)絡(luò)通信模塊以及重啟日志歸并程序。操作系統(tǒng)是管理和控制重啟日志歸并系統(tǒng)硬件和軟件資源的程序,支持重啟日志歸并程序以及其它軟件和/或程序的運(yùn)行。網(wǎng)絡(luò)通信模塊用于實(shí)現(xiàn)存儲器109內(nèi)部各組件之間的通信,以及與重啟日志歸并系統(tǒng)中其它硬件和軟件之間通信。在圖7所示的重啟日志歸并系統(tǒng)中,重啟日志歸并程序可應(yīng)用于服務(wù)器,處理器110用于執(zhí)行存儲器109中存儲的重啟日志歸并程序,實(shí)現(xiàn)以下步驟:接收并解析移動終端上傳的重啟日志,以獲取重啟類型和重啟原因,并將重啟類型和重啟原因合并作為重啟關(guān)鍵字;判斷重啟問題數(shù)據(jù)庫中是否存在所述重啟關(guān)鍵字;當(dāng)重啟問題數(shù)據(jù)庫中不存在所述重啟關(guān)鍵字時,將所述重啟關(guān)鍵字添加到重啟問題數(shù)據(jù)庫,并將所述重啟日志作為一類新的重啟原因類型存儲。進(jìn)一步地,所述判斷重啟問題數(shù)據(jù)庫中是否存在所述重啟關(guān)鍵字的步驟之后包括包括:當(dāng)重啟問題數(shù)據(jù)庫中存在所述重啟關(guān)鍵字時,將重啟關(guān)鍵字對應(yīng)的重啟日志歸入原有的重啟原因類型,并將重啟關(guān)鍵字對應(yīng)的重啟日志數(shù)量更新。進(jìn)一步地,所述接收并解析移動終端上傳的重啟日志,以獲取重啟類型和重啟原因的步驟包括:接收移動終端上傳的重啟日志,并對重啟日志中的崩潰日志和系統(tǒng)日志解析以獲取重啟類型;根據(jù)所述重啟類型的分類,獲取分類對應(yīng)的重啟原因。進(jìn)一步地,所述對重啟日志中的崩潰日志和系統(tǒng)日志解析以獲取重啟類型的步驟包括:判斷崩潰日志中是否存在第一字符串,當(dāng)存在第一字符串時,判定重啟類型為第一類重啟,并獲取第一類重啟的重啟信息;判斷崩潰日志中是否存在第二字符串,當(dāng)存在第二字符串時,判定重啟類型為第二類重啟,并獲取第二類重啟的重啟信息;判斷系統(tǒng)日志中是否存在第三字符串,當(dāng)存在第三字符串時,判定重啟類型為第三類重啟,并獲取第三類重啟的重啟信息。進(jìn)一步地,所述根據(jù)所述重啟類型的分類,獲取分類對應(yīng)的重啟原因的步驟包括:當(dāng)重啟類型為第一類重啟時,根據(jù)第一類重啟的重啟信息確定第一重啟原因;當(dāng)重啟類型為第二類重啟時,根據(jù)第二類重啟的重啟信息確定第二重啟原因;當(dāng)重啟類型為第三類重啟時,根據(jù)第三類重啟的重啟信息確定第三重啟原因。進(jìn)一步地,所述將重啟類型和重啟原因合并作為重啟關(guān)鍵字的步驟包括:將第一類重啟和第一重啟原因合并作為第一重啟關(guān)鍵字;將第二類重啟和第二重啟原因合并作為第二重啟關(guān)鍵字;將第三類重啟和第三重啟原因合并作為第三重啟關(guān)鍵字。進(jìn)一步地,在圖7所示的重啟日志歸并系統(tǒng)中,重啟日志歸并程序可應(yīng)用于移動終端,處理器110用于執(zhí)行存儲器109中存儲的重啟日志歸并程序,實(shí)現(xiàn)以下步驟:設(shè)置重啟標(biāo)識符,當(dāng)檢測到移動終端出現(xiàn)重啟時,判斷重啟標(biāo)識符是否等于預(yù)設(shè)值;當(dāng)重啟標(biāo)識符等于預(yù)設(shè)值時,抓取重啟日志,并將所述重啟日志上傳至服務(wù)器。進(jìn)一步地,所述當(dāng)重啟標(biāo)識符等于預(yù)設(shè)值時,抓取重啟日志,并將所述重啟日志上傳至服務(wù)器的步驟包括:當(dāng)重啟標(biāo)識符等于預(yù)設(shè)值時,生成框架異常廣播;將所述框架異常廣播發(fā)送到日志系統(tǒng),以供日志系統(tǒng)基于框架異常廣播抓取重啟日志,并將所述重啟日志上傳至服務(wù)器。本發(fā)明提供了一種計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可讀存儲介質(zhì)存儲有一個或者一個以上程序,所述一個或者一個以上程序還可被一個或者一個以上的處理器執(zhí)行以用于:接收并解析移動終端上傳的重啟日志,以獲取重啟類型和重啟原因,并將重啟類型和重啟原因合并作為重啟關(guān)鍵字;判斷重啟問題數(shù)據(jù)庫中是否存在所述重啟關(guān)鍵字;當(dāng)重啟問題數(shù)據(jù)庫中不存在所述重啟關(guān)鍵字時,將所述重啟關(guān)鍵字添加到重啟問題數(shù)據(jù)庫,并將所述重啟日志作為一類新的重啟原因類型存儲。進(jìn)一步地,所述判斷重啟問題數(shù)據(jù)庫中是否存在所述重啟關(guān)鍵字的步驟之后包括包括:當(dāng)重啟問題數(shù)據(jù)庫中存在所述重啟關(guān)鍵字時,將重啟關(guān)鍵字對應(yīng)的重啟日志歸入原有的重啟原因類型,并將重啟關(guān)鍵字對應(yīng)的重啟日志數(shù)量更新。進(jìn)一步地,所述接收并解析移動終端上傳的重啟日志,以獲取重啟類型和重啟原因的步驟包括:接收移動終端上傳的重啟日志,并對重啟日志中的崩潰日志和系統(tǒng)日志解析以獲取重啟類型;根據(jù)所述重啟類型的分類,獲取分類對應(yīng)的重啟原因。進(jìn)一步地,所述對重啟日志中的崩潰日志和系統(tǒng)日志解析以獲取重啟類型的步驟包括:判斷崩潰日志中是否存在第一字符串,當(dāng)存在第一字符串時,判定重啟類型為第一類重啟,并獲取第一類重啟的重啟信息;判斷崩潰日志中是否存在第二字符串,當(dāng)存在第二字符串時,判定重啟類型為第二類重啟,并獲取第二類重啟的重啟信息;判斷系統(tǒng)日志中是否存在第三字符串,當(dāng)存在第三字符串時,判定重啟類型為第三類重啟,并獲取第三類重啟的重啟信息。進(jìn)一步地,所述根據(jù)所述重啟類型的分類,獲取分類對應(yīng)的重啟原因的步驟包括:當(dāng)重啟類型為第一類重啟時,根據(jù)第一類重啟的重啟信息確定第一重啟原因;當(dāng)重啟類型為第二類重啟時,根據(jù)第二類重啟的重啟信息確定第二重啟原因;當(dāng)重啟類型為第三類重啟時,根據(jù)第三類重啟的重啟信息確定第三重啟原因。進(jìn)一步地,所述將重啟類型和重啟原因合并作為重啟關(guān)鍵字的步驟包括:將第一類重啟和第一重啟原因合并作為第一重啟關(guān)鍵字;將第二類重啟和第二重啟原因合并作為第二重啟關(guān)鍵字;將第三類重啟和第三重啟原因合并作為第三重啟關(guān)鍵字。所述一個或者一個以上程序還可被一個或者一個以上的處理器執(zhí)行以用于:設(shè)置重啟標(biāo)識符,當(dāng)檢測到移動終端出現(xiàn)重啟時,判斷重啟標(biāo)識符是否等于預(yù)設(shè)值;當(dāng)重啟標(biāo)識符等于預(yù)設(shè)值時,抓取重啟日志,并將所述重啟日志上傳至服務(wù)器。進(jìn)一步地,所述當(dāng)重啟標(biāo)識符等于預(yù)設(shè)值時,抓取重啟日志,并將所述重啟日志上傳至服務(wù)器的步驟包括:當(dāng)重啟標(biāo)識符等于預(yù)設(shè)值時,生成框架異常廣播;將所述框架異常廣播發(fā)送到日志系統(tǒng),以供日志系統(tǒng)基于框架異常廣播抓取重啟日志,并將所述重啟日志上傳至服務(wù)器。本發(fā)明計算機(jī)可讀存儲介質(zhì)具體實(shí)施方式與上述重啟日志歸并方法各實(shí)施例基本相同,在此不再贅述。需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端(可以是手機(jī),計算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述的方法。上面結(jié)合附圖對本發(fā)明的實(shí)施例進(jìn)行了描述,但是本發(fā)明并不局限于上述的具體實(shí)施方式,上述的具體實(shí)施方式僅僅是示意性的,而不是限制性的,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明宗旨和權(quán)利要求所保護(hù)的范圍情況下,還可做出很多形式,這些均屬于本發(fā)明的保護(hù)之內(nèi)。當(dāng)前第1頁12當(dāng)前第1頁12
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1