本發(fā)明涉及信息技術(shù)領(lǐng)域,特別涉及一種分析轉(zhuǎn)儲文件的方法。
背景技術(shù):
受諸多因素的影響,計算機(jī)軟件都或多或少存在著軟件缺陷,運(yùn)行過程中會不可避免地產(chǎn)生崩潰?,F(xiàn)有技術(shù)中當(dāng)崩潰發(fā)生時,可通過調(diào)用操作系統(tǒng)的功能,收集軟件崩潰時內(nèi)存的相關(guān)信息并生成崩潰轉(zhuǎn)儲文件(dump),該文件為軟件開發(fā)人員解決軟件崩潰問題提供了重要依據(jù)。然而,對于有著龐大用戶群體的軟件(例如游戲客戶端)來說,每天產(chǎn)生的dump數(shù)以千計,如果手動逐個分析這些文件,費(fèi)時費(fèi)力。
現(xiàn)有技術(shù)中,通過分析dump,生成崩潰轉(zhuǎn)儲分析日志,再對該日志進(jìn)行提取出崩潰基礎(chǔ)特征,最后基于崩潰基礎(chǔ)特征和崩潰輔助特征對所述轉(zhuǎn)儲文件進(jìn)行判定,最終定位崩潰問題。
現(xiàn)有技術(shù)對于dump的分析存在以下缺點:一是分析dump文件時需要將dump文件發(fā)送到第三方分析端,而實際操作中,還需要同時發(fā)送dump文件對應(yīng)的pdb文件,而pdb文件小則幾十KB,大則幾十MB,當(dāng)網(wǎng)絡(luò)異?;蚴蔷W(wǎng)速較慢時,上傳文件耗時,直接導(dǎo)致分析dump時間增加,分析效率下降,情況嚴(yán)重時,完全不能得到最終分析結(jié)果;二是對dump分析后得到的崩潰轉(zhuǎn)儲日志的處理涉及提取出崩潰基礎(chǔ)特征,查詢版本管理服務(wù)器,查詢歷史崩潰數(shù)據(jù)庫等復(fù)雜、冗余操作,而實際操作中,軟件開發(fā)人員只要看到生成崩潰轉(zhuǎn)儲分析日志,基本就能定位崩潰問題;三是在dump分析的過程中分析狀態(tài)不可見,缺乏對分析過程的靈活控制。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)的上述不足,本發(fā)明提供了一種分析轉(zhuǎn)儲文件的方法,其特征在于:
S101、發(fā)送崩潰轉(zhuǎn)儲文件:當(dāng)軟件發(fā)生崩潰時,調(diào)用操作系統(tǒng)的功能,生成dump文件,然后將dump文件發(fā)送到dump文件存儲端;
S102、接收崩潰轉(zhuǎn)儲文件:dump文件接收端接收客戶端發(fā)送來的dump文件,然后根據(jù)接收到的文件,判斷該dump文件所屬軟件模塊,對其進(jìn)行分類、打包壓縮、存儲,為下一步分析dump文件做好準(zhǔn)備;
S103、分析崩潰轉(zhuǎn)儲文件:打開dump自動分析軟件,創(chuàng)建一個下載任務(wù)啟動線程,創(chuàng)建一個分析任務(wù)啟動線程;自動打開并登錄dump下載網(wǎng)頁,選擇要下載的dump壓縮包,為每個dump壓縮包創(chuàng)建一個下載任務(wù),將其添加到下載任務(wù)隊列,下載任務(wù)啟動線程循環(huán)檢查并啟動下載任務(wù);有下載完成時,則啟動一個解壓線程,開始解壓;有解壓完成時,則創(chuàng)建一個分析任務(wù),將其添加到分析任務(wù)隊列;分析任務(wù)啟動線程循環(huán)檢查并啟動分析進(jìn)程對dump進(jìn)行分析。
優(yōu)選地,S102中,客戶端還可將dump文件與其他與崩潰相關(guān)的日志信息或文件與一起發(fā)送,所述與崩潰相關(guān)的日志信息或文件包括但不限于發(fā)生崩潰時對軟件界面的截圖文件,軟件崩潰前產(chǎn)生的日志文件,當(dāng)前崩潰模塊名稱,崩潰時間,操作系統(tǒng)類型。
優(yōu)選地,所述S103進(jìn)一步包含如下步驟:
S201、配置分析參數(shù):設(shè)置分析參數(shù),包括分析調(diào)試器的路徑,崩潰文件對應(yīng)PDB文件路徑,分析結(jié)果文件保存路徑,下載的dump壓縮包保存路徑,dump解壓縮后保存路徑,最大并發(fā)分析進(jìn)程數(shù)量,自動登錄dump文件存儲端需要的用戶名、密碼、網(wǎng)頁地址;將配置信息保存到xml文件中;
S202、添加一個或多個dump壓縮包:獲取壓縮包,為創(chuàng)建解壓線程做準(zhǔn)備;打開下載窗口,窗口打開時自動獲取分析參數(shù)配置中預(yù)設(shè)的用戶名、密碼、網(wǎng)頁地址,打開并自動登錄dump下載網(wǎng)頁,然后選擇一個或多個要下載的壓縮包,為每一個要下載的壓縮包創(chuàng)建一個下載任務(wù),并將其添加到下載任務(wù)隊列中;當(dāng)有dump壓縮包下載完成時,為其創(chuàng)建一個解壓線程,開始解壓;除下載新的dump壓縮包外,還可以添加之前已下載過的dump壓縮包,打開文件選擇窗口,選擇一個或多個dump壓縮包,然后為每個壓縮包創(chuàng)建一個解壓線程,開始解壓;
S203、并行解壓dump壓縮包,得到dump文件:創(chuàng)建完解壓線程,解壓線程根據(jù)dump壓縮包路徑,立即開始解壓;解壓后的dump文件保存位置由分析參數(shù)配置信息決定;解壓完成時,為每一個dump文件創(chuàng)建一個分析任務(wù),并將其添加到分析任務(wù)隊列;
S204、并行分析dump文件:分析任務(wù)啟動線程通過循環(huán)檢查分析任務(wù)隊列中是否存在狀態(tài)為“未啟動”的分析任務(wù),有未啟動的分析任務(wù),則將其標(biāo)記為“啟動中”,并創(chuàng)建一個新的線程,在新的線程中啟動分析進(jìn)程,進(jìn)程啟動完成時將對應(yīng)的分析任務(wù)的狀態(tài)修改為“分析中”,并開始對dump進(jìn)行分析;在將一個分析任務(wù)標(biāo)記為“啟動中”之前,還需要判斷當(dāng)前分析任務(wù)隊列中狀態(tài)為“分析中”的分析任務(wù)的數(shù)量是否已達(dá)到最大分析進(jìn)程并發(fā)數(shù),未達(dá)到最大并發(fā)分析進(jìn)程數(shù),則啟動分析任務(wù),分析任務(wù)完成時修改任務(wù)狀態(tài)為“已完成”;否則,需要等待正在分析中的分析任務(wù)完成才可以繼續(xù)啟動新的分析任務(wù);
S205、對分析任務(wù)進(jìn)行控制:控制操作包括停止,刪除,重新啟動分析任務(wù)。選擇停止一個或多個正在分析或等待的分析的任務(wù)時,先終止這些分析任務(wù)對應(yīng)的進(jìn)程,然后將分析任務(wù)狀態(tài)設(shè)置為“已取消”。刪除一個或多個分析任務(wù)時,先要終止這些分析任務(wù)對應(yīng)的進(jìn)程,然后將分析任務(wù)狀態(tài)修改為“已刪除”。重新啟動一個或多個分析任務(wù)時,先終止這些分析任務(wù)對應(yīng)的分析進(jìn)程,然后將其任務(wù)狀態(tài)置為“未分析”,等待分析任務(wù)啟動線程再次啟動該分析任務(wù);
S206、查看分析結(jié)果:當(dāng)有一個dump分析完成時,提醒查看分析結(jié)果信息,此時點擊并打開一條未查看的崩潰轉(zhuǎn)儲文件的分析結(jié)果日志。
優(yōu)選地,由于一個dump壓縮包可能包含有多個軟件模塊的dump壓縮包或一個軟件模塊的多個dump壓縮包,解壓時需要遞歸判斷是否是壓縮文件并解壓。
優(yōu)選地,如果需要查看其它輔助崩潰信息,通過步驟S101中收集到的其他軟件崩潰時的日志及信息文件,輔助進(jìn)行崩潰問題的快速定位,查看完本條分析結(jié)果日志信息,將其標(biāo)記為已查看;還可繼續(xù)查看下一個分析結(jié)果日志,達(dá)到最后一個或是第一個時,提醒已經(jīng)沒有更多分析日志可查看。
優(yōu)選地,所述S202進(jìn)一步包含如下步驟:
S301、判斷是否要下載dump壓縮包:
壓縮包的添加有兩種方式:下載新的dump壓縮包、添加本地已有的dump壓縮包。此時,可以選擇下載新的dump壓縮包,選擇需要下載一個或多個dump壓縮包;
S302、手動選擇已有dump壓縮包:壓縮包的添加有兩種方式:下載新的dump壓縮包、添加本地已有的dump壓縮包;此時,可以選擇添加本地已有的dump壓縮包,選擇一個或多個已有dump壓縮包;
S303、自動登錄dump存儲端:在dump分析工具中打開下載窗口時,從分析參數(shù)配置文件中獲取預(yù)設(shè)的登錄用戶名、密碼、網(wǎng)址,自動打開dump下載網(wǎng)頁并登錄,登錄成功后網(wǎng)頁中將按日期先后順序顯示所有可下載的dump壓縮包,登錄失敗,則提示無法打開網(wǎng)頁;
S304、選擇一個或多個要下載的dump壓縮包:在dump下載網(wǎng)頁中選擇一個或多個要下載的dump壓縮包,點擊下載按鈕,此時,dump自動分析工具截獲下載按鈕點擊事件,并獲取已選擇的dump壓縮包名稱,壓縮包生成日期等信息,并準(zhǔn)備創(chuàng)建下載任務(wù),開始下載;
S305、為每一個dump壓縮包創(chuàng)建一個下載任務(wù),并將其添加到下載任務(wù)隊列:根據(jù)選擇的dump壓縮包信息,以及預(yù)設(shè)分析參數(shù)信息中dump壓縮包保存路徑,為每個需要下載的dump壓縮包創(chuàng)建一個下載任務(wù),并添加到下載任務(wù)隊列中,初始時所有下載任務(wù)的狀態(tài)都是“未啟動”;下載任務(wù)啟動線程會循環(huán)檢查下載任務(wù)隊列中狀態(tài)為“未啟動”的下載任務(wù),并依次啟動這些下載任務(wù),然后將下載任務(wù)狀態(tài)修改為“下載中”。
優(yōu)選地,所述S204進(jìn)一步包含如下步驟:
S401、判斷分析任務(wù)隊列中是否有狀態(tài)為“未啟動”的分析任務(wù):分析任務(wù)啟動線程循環(huán)查找分析任務(wù)隊列中是否有未啟動的分析任務(wù),有未啟動的分析任務(wù),則繼續(xù)判斷是否符合啟動任務(wù)條件;否則,需要等待一定時間(該時間一般為小于一秒)再循環(huán)判斷;
S402、當(dāng)前的分析任務(wù)是否已達(dá)到最大并發(fā)分析進(jìn)程數(shù):獲取分析任務(wù)隊列中狀態(tài)為“分析中”的分析任務(wù)數(shù)量,并將其與預(yù)設(shè)的最大分析進(jìn)程數(shù)量比較,不超過最大并發(fā)分析進(jìn)程數(shù),則啟動分析任務(wù);否則,等待一定時間(該時間一般為小于一秒)再嘗試啟動分析任務(wù);
S403、創(chuàng)建一個新的線程,在線程中啟動分析進(jìn)程,開始分析dump文件,并將分析任務(wù)狀態(tài)修改為“分析中”:在分析任務(wù)隊列找到一個狀態(tài)為“未啟動”的分析任務(wù),將其狀態(tài)修改為“啟動中”,創(chuàng)建一個線程,在線程中通過分析任務(wù)的詳細(xì)信息為其啟動一個分析進(jìn)程,開始分析dump文件,進(jìn)程啟動完成,將分析任務(wù)的狀態(tài)修改為“分析中”,分析任務(wù)完成時修改分析任務(wù)狀態(tài)為“已完成”;
S404、是否需要對分析任務(wù)進(jìn)行控制:在分析任務(wù)開始后可以對分析進(jìn)行控制操作,包括停止正在分析的任務(wù),刪除正在分析的任務(wù),重啟已停止的分析任務(wù);如果不需要對任務(wù)進(jìn)行控制,則繼續(xù)循環(huán)查找并啟動狀態(tài)為“未啟動”的分析任務(wù);否則,開始對分析任務(wù)進(jìn)行控制操作;
S405、等待:為了減少線程循環(huán)嘗試啟動分析進(jìn)程的次數(shù),以及占用CPU的時間,將線程掛起一段時間再繼續(xù),為及時啟動狀態(tài)為“未啟動”的分析任務(wù),該等待時間應(yīng)設(shè)置為小于一秒。
優(yōu)選地,所述S205進(jìn)一步包含如下步驟:
S501、判斷是否要停止分析任務(wù):在dump文件分析的過程中,可以對一個或多個正在執(zhí)行分析的任務(wù),或正在等待分析的任務(wù),或已停止的分析任務(wù)進(jìn)行操作;
S502、判斷是否要刪除分析任務(wù):在dump文件分析的過程中,可以對一個或多個正在執(zhí)行分析的任務(wù),或正在等待分析的任務(wù),或已停止的分析任務(wù)進(jìn)行操作,具體操作包括停止分析任務(wù),重啟分析任務(wù),刪除分析任務(wù)。
S503、判斷是否要重新啟動分析任務(wù):在dump文件分析的過程中,可以對一個或多個正在執(zhí)行分析的任務(wù),或正在等待分析的任務(wù),或已停止的分析任務(wù)進(jìn)行操作;
S504、判斷當(dāng)前分析任務(wù)是否為“分析中”:在dump文件分析的過程中,可以對一個或多個正在執(zhí)行分析的任進(jìn)行停止,刪除,重啟操作,在這些操作中都需要先判斷當(dāng)前分析任務(wù)的狀態(tài)是否為“分析中”,如果是,則需要先終止分析進(jìn)程,否則,直接更新分析任務(wù)的狀態(tài);
S505、終止分析任務(wù)對應(yīng)的分析進(jìn)程:在dump文件分析的過程中,當(dāng)分析任務(wù)狀態(tài)為“分析中”,則表示該分析任務(wù)對應(yīng)的分析進(jìn)程還未退出,此時,若需要停止該分析任務(wù),則要終止該分析任務(wù)對應(yīng)的分析進(jìn)程;
S506、更新分析任務(wù)狀態(tài):在dump文件分析的過程中,選擇了停止分析任務(wù),或是刪除分析任務(wù),或是重啟分析任務(wù),都要先終止當(dāng)前的分析任務(wù)對應(yīng)的分析進(jìn)程,然后按照所選擇的操作更新該任務(wù)的狀態(tài)。
優(yōu)選地,S501的操作包括但不限于停止分析任務(wù),重啟分析任務(wù),刪除分析任務(wù)。其中,停止分析任務(wù)首先要終止分析任務(wù)對應(yīng)的分析進(jìn)程,然后更新當(dāng)前分析任務(wù)狀態(tài)為“已取消”;
S502中刪除分析任務(wù)首先要終止分析任務(wù)對應(yīng)的分析進(jìn)程,然后更新該分析任務(wù)狀態(tài)為“已刪除”;
優(yōu)選地,S503中的操作包括停止分析任務(wù),重啟分析任務(wù),刪除分析任務(wù);重啟分析任務(wù)首先要終止當(dāng)前分析任務(wù)對應(yīng)的分析進(jìn)程,然后更新該分析任務(wù)狀態(tài)為“未啟動”,等待分析任務(wù)啟動線程再次重新啟動改分析任務(wù)。
通過實施本發(fā)明的分析轉(zhuǎn)儲方法,能夠?qū)崿F(xiàn)批量、快速的dump分析,并將dump分析狀態(tài)可見、分析過程可控,減少了分析過程中不必要的手動操作,提高了分析效率,增加了對分析過程控制的靈活性,為軟件開發(fā)人員快速定位和解決重大軟件缺陷提供了重要支撐。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是根據(jù)本發(fā)明一個實施例的分析轉(zhuǎn)儲文件的方法流程圖;
圖2是根據(jù)本發(fā)明另一個實施例的分析轉(zhuǎn)儲文件的方法流程圖;
圖3是根據(jù)本發(fā)明另一個實施例的分析轉(zhuǎn)儲文件的方法流程圖;
圖4是根據(jù)本發(fā)明另一個實施例的分析轉(zhuǎn)儲文件的方法流程圖;
圖5是根據(jù)本發(fā)明另一個實施例的分析轉(zhuǎn)儲文件的方法流程圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實施例的方案,下面結(jié)合附圖和實施方式對本發(fā)明實施例作進(jìn)一步的詳細(xì)說明。
縮略語和關(guān)鍵術(shù)語定義:
Dump(崩潰轉(zhuǎn)儲文件):軟件運(yùn)行崩潰時,通過調(diào)用操作系統(tǒng)的功能,收集軟件崩潰時內(nèi)存的相關(guān)信息并生的文件,這種文件可以通過專用工具軟件打開,比如WinDbg。
PDB(Program Debug Database,程序調(diào)試數(shù)據(jù)庫):該文件記錄軟件調(diào)試和項目的狀態(tài)信息,用于應(yīng)用程序的調(diào)試分析,在軟件編譯時生成。
KB:計算機(jī)中表示儲存容量大小的單位,表示1024字節(jié)。
MB:計算機(jī)中表示儲存容量大小的單位,表示1024KB。
Http(HyperText Transfer Protocol,超文本傳輸協(xié)議):是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有的WWW文件都必須遵守這個標(biāo)準(zhǔn)。
CPU(Central Processing Unit,中央處理器):是一塊超大規(guī)模的集成電路,是一臺計算機(jī)的運(yùn)算核心和控制核心,主要是解釋計算機(jī)指令以及處理計算機(jī)軟件中的數(shù)據(jù)。
下載任務(wù)隊列:一個隊列,保存所有下載任務(wù),按照加入的順序,先加入隊列的下載任務(wù)被優(yōu)先取出,每個下載任務(wù)信息包括下載任務(wù)編號、下載地址、保存路徑、當(dāng)前狀態(tài)(未啟動、啟動中、啟動失敗、啟動成功、已取消、已刪除、已完成、下載失敗)。
下載任務(wù)啟動線程:一個線程,用于循環(huán)檢查下載任務(wù)隊列中的狀態(tài)為“未啟動”的下載任務(wù),如果有,則將該任務(wù)狀態(tài)修改為“啟動中”,并創(chuàng)建一個新的線程開始下載數(shù)據(jù);如果沒有,則等待一定時間(該時間范圍不固定,但為確保未啟動的分析任務(wù)能及時被啟動,該時間可設(shè)定為一秒內(nèi))再循環(huán)檢查下載任務(wù)隊列。
解壓線程:一個線程,用于調(diào)用解壓工具對下載完成或手動添加的dump壓縮包進(jìn)行遞歸解壓,并將解壓后的文件存放在指定路徑(該路徑由設(shè)定的分析配置參數(shù)確定)。
分析任務(wù)隊列:一個隊列,用于保存所有分析任務(wù),按照加入的順序,先加入隊列的分析任務(wù)被優(yōu)先取出,每個分析任務(wù)信息包括分析任務(wù)編號、dump文件路徑、調(diào)試分析器路徑、分析結(jié)果日志保存路徑、當(dāng)前狀態(tài)(未啟動、啟動中、啟動失敗、啟動成功、已取消、已完成、分析失敗)。
分析任務(wù)啟動線程:一個線程,用于循環(huán)檢查分析任務(wù)隊列中的狀態(tài)為“未啟動”的分析任務(wù),如果有,則將該任務(wù)狀態(tài)修改為“啟動中”,并創(chuàng)建一個新的線程,在線程中調(diào)用分析調(diào)試器程序,并傳遞分析參數(shù),啟動分析進(jìn)程,開始分析dump;如果沒有,則等待一定(該時間范圍不固定,但為確保未啟動的分析任務(wù)能及時被啟動,該時間可設(shè)定為一秒內(nèi))時間再循環(huán)檢查分析任務(wù)隊列。
根據(jù)本發(fā)明的一個具體實施方式,如圖1所示,一種分析轉(zhuǎn)儲文件的方法:
S101、發(fā)送崩潰轉(zhuǎn)儲文件:當(dāng)軟件發(fā)生崩潰時,調(diào)用操作系統(tǒng)的功能,生成dump文件,然后將dump文件發(fā)送到dump文件存儲端;
根據(jù)本發(fā)明的一個優(yōu)選實施方式,還可以將其他與崩潰相關(guān)的日志信息或文件也一起發(fā)送,所述與崩潰相關(guān)的日志信息或文件包括但不限于發(fā)生崩潰時對軟件界面的截圖文件,軟件崩潰前產(chǎn)生的日志文件,當(dāng)前崩潰模塊名稱,崩潰時間,操作系統(tǒng)類型;
S102、接收崩潰轉(zhuǎn)儲文件:dump文件接收端接收客戶端發(fā)送來的dump文件,包括其他與崩潰相關(guān)的日志信息或文件,然后根據(jù)接收到的文件,判斷該dump文件所屬軟件模塊,對其進(jìn)行分類、打包壓縮、存儲,為下一步分析dump文件做好準(zhǔn)備;
S103、分析崩潰轉(zhuǎn)儲文件:打開dump自動分析軟件,創(chuàng)建一個下載任務(wù)啟動線程,創(chuàng)建一個分析任務(wù)啟動線程;自動打開并登錄dump下載網(wǎng)頁,選擇要下載的dump壓縮包,為每個dump壓縮包創(chuàng)建一個下載任務(wù),將其添加到下載任務(wù)隊列,下載任務(wù)啟動線程循環(huán)檢查并啟動下載任務(wù);有下載完成時,則啟動一個解壓線程,開始解壓;有解壓完成時,則創(chuàng)建一個分析任務(wù),將其添加到分析任務(wù)隊列;分析任務(wù)啟動線程循環(huán)檢查并啟動分析進(jìn)程對dump進(jìn)行分析。
根據(jù)本發(fā)明的一個具體實施方式,所述S103進(jìn)一步包含如下步驟:
S201、配置分析參數(shù):設(shè)置分析參數(shù),包括分析調(diào)試器的路徑,崩潰文件對應(yīng)PDB文件路徑,分析結(jié)果文件保存路徑,下載的dump壓縮包保存路徑,dump解壓縮后保存路徑,最大并發(fā)分析進(jìn)程數(shù)量,自動登錄dump文件存儲端需要的用戶名、密碼、網(wǎng)頁地址;將配置信息保存到xml文件中;
S202、添加一個或多個dump壓縮包:獲取壓縮包,為創(chuàng)建解壓線程做準(zhǔn)備;打開下載窗口,窗口打開時自動獲取分析參數(shù)配置中預(yù)設(shè)的用戶名、密碼、網(wǎng)頁地址,打開并自動登錄dump下載網(wǎng)頁,然后選擇一個或多個要下載的壓縮包,為每一個要下載的壓縮包創(chuàng)建一個下載任務(wù),并將其添加到下載任務(wù)隊列中;當(dāng)有dump壓縮包下載完成時,為其創(chuàng)建一個解壓線程,開始解壓;除下載新的dump壓縮包外,還可以添加之前已下載過的dump壓縮包,打開文件選擇窗口,選擇一個或多個dump壓縮包,然后為每個壓縮包創(chuàng)建一個解壓線程,開始解壓;
S203、并行解壓dump壓縮包,得到dump文件:創(chuàng)建完解壓線程,解壓線程根據(jù)dump壓縮包路徑,立即開始解壓;解壓后的dump文件保存位置由分析參數(shù)配置信息決定;解壓完成時,為每一個dump文件創(chuàng)建一個分析任務(wù),并將其添加到分析任務(wù)隊列;
根據(jù)本發(fā)明的一個具體實施方式,由于一個dump壓縮包可能包含有多個軟件模塊的dump壓縮包或一個軟件模塊的多個dump壓縮包,解壓時需要遞歸判斷是否是壓縮文件并解壓;
S204、并行分析dump文件:分析任務(wù)啟動線程通過循環(huán)檢查分析任務(wù)隊列中是否存在狀態(tài)為“未啟動”的分析任務(wù),有未啟動的分析任務(wù),則將其標(biāo)記為“啟動中”,并創(chuàng)建一個新的線程,在新的線程中啟動分析進(jìn)程,進(jìn)程啟動完成時將對應(yīng)的分析任務(wù)的狀態(tài)修改為“分析中”,并開始對dump進(jìn)行分析;在將一個分析任務(wù)標(biāo)記為“啟動中”之前,還需要判斷當(dāng)前分析任務(wù)隊列中狀態(tài)為“分析中”的分析任務(wù)的數(shù)量是否已達(dá)到最大分析進(jìn)程并發(fā)數(shù),未達(dá)到最大分析進(jìn)程數(shù),則啟動分析任務(wù),否則,需要等待正在分析中的分析任務(wù)完成才可以繼續(xù)啟動新的分析任務(wù);
S205、對分析任務(wù)進(jìn)行控制:控制操作包括停止,刪除,重新啟動分析任務(wù)。選擇停止一個或多個正在分析或等待的分析的任務(wù)時,先終止這些分析任務(wù)對應(yīng)的進(jìn)程,然后將分析任務(wù)狀態(tài)設(shè)置為“已取消”。刪除一個或多個分析任務(wù)時,先要終止這些分析任務(wù)對應(yīng)的進(jìn)程,然后將分析任務(wù)狀態(tài)修改為“已刪除”。重新啟動一個或多個分析任務(wù)時,先終止這些分析任務(wù)對應(yīng)的分析進(jìn)程,然后將其任務(wù)狀態(tài)置為“未分析”,等待分析任務(wù)啟動線程再次啟動該分析任務(wù);
S206、查看分析結(jié)果:當(dāng)有一個dump分析完成時,提醒查看分析結(jié)果信息,此時點擊并打開一條未查看的崩潰轉(zhuǎn)儲文件的分析結(jié)果日志;
根據(jù)本發(fā)明的一個具體實施方式,如果需要查看其它輔助崩潰信息,通過步驟S101中收集到的其他軟件崩潰時的日志及信息文件,輔助進(jìn)行崩潰問題的快速定位,查看完本條分析結(jié)果日志信息,將其標(biāo)記為已查看;還可繼續(xù)查看下一個分析結(jié)果日志,達(dá)到最后一個或是第一個時,提醒已經(jīng)沒有更多分析日志可查看。
如圖3所示,根據(jù)本發(fā)明的一個具體實施方式,S202(添加dump壓縮包)具體包含如下步驟:
S301、判斷是否要下載dump壓縮包:
根據(jù)本發(fā)明的一個具體實施方式,壓縮包的添加有兩種方式:下載新的dump壓縮包、添加本地已有的dump壓縮包。此時,可以選擇下載新的dump壓縮包,選擇需要下載一個或多個dump壓縮包;
S302、手動添加已有dump壓縮包:壓縮包的添加有兩種方式:下載新的dump壓縮包、添加本地已有的dump壓縮包;此時,可以選擇添加一個或多個本地已有的dump壓縮包;
S303、自動登錄dump存儲端:在dump分析工具中打開下載窗口時,從分析參數(shù)配置文件中獲取預(yù)設(shè)的登錄用戶名、密碼、網(wǎng)址,自動打開dump下載網(wǎng)頁并登錄,登錄成功后網(wǎng)頁中將按日期先后順序顯示所有可下載的dump壓縮包,登錄失敗,則提示無法打開網(wǎng)頁;
S304、選擇一個或多個要下載的dump壓縮包:在dump下載網(wǎng)頁中選擇一個或多個要下載的dump壓縮包,點擊下載按鈕,此時,dump自動分析工具截獲下載按鈕點擊事件,并獲取已選擇的dump壓縮包名稱,壓縮包生成日期等信息,并準(zhǔn)備創(chuàng)建下載任務(wù),開始下載;
S305、為每一個dump壓縮包創(chuàng)建一個下載任務(wù),并將其添加到下載任務(wù)隊列:根據(jù)選擇的dump壓縮包信息,以及預(yù)設(shè)分析參數(shù)信息中dump壓縮包保存路徑,為每個需要下載的dump壓縮包創(chuàng)建一個下載任務(wù),并添加到下載任務(wù)隊列中,初始時所有下載任務(wù)的狀態(tài)都是“未啟動”;下載任務(wù)啟動線程循環(huán)查找下載任務(wù)隊列中狀態(tài)為“未啟動”的下載任務(wù),并依次啟動這些下載任務(wù),然后將下載任務(wù)狀態(tài)修改為“下載中”。
如圖4所示,根據(jù)本發(fā)明的一個具體實施方式,S204(并行分析dump文件)具體包含如下步驟:
S401、判斷分析任務(wù)隊列中是否有狀態(tài)為“未啟動”的分析任務(wù):分析任務(wù)啟動線程循環(huán)查找分析任務(wù)隊列中是否有未啟動的分析任務(wù),有未啟動的分析任務(wù),則繼續(xù)判斷是否符合啟動任務(wù)條件;否則,需要等待一定時間(該時間一般為小于一秒)再循環(huán)查找。
S402、當(dāng)前的分析任務(wù)是否已達(dá)到最大分析進(jìn)程數(shù):獲取分析任務(wù)隊列中狀態(tài)為“分析中”的分析任務(wù)數(shù)量,并將其與預(yù)設(shè)的最大并發(fā)分析進(jìn)程數(shù)量比較,不超過最大并發(fā)分析進(jìn)程數(shù),則啟動分析任務(wù);否則,等待一定一時間(該時間一般為小于一秒)再嘗試啟動分析任務(wù)。
S403、創(chuàng)建一個新的線程,在線程中啟動分析進(jìn)程,開始分析dump文件,并將分析任務(wù)狀態(tài)修改為“分析中”:在分析任務(wù)隊列找到一個狀態(tài)為“未啟動”的分析任務(wù),將其狀態(tài)修改為“啟動中”,創(chuàng)建一個線程,在線程中通過分析任務(wù)的詳細(xì)信息為其啟動一個分析進(jìn)程,開始分析dump文件,進(jìn)程啟動完成,將分析任務(wù)的狀態(tài)修改為“分析中”;
S404、是否需要對分析任務(wù)進(jìn)行控制:在分析任務(wù)開始后可以對分析進(jìn)行控制操作,包括停止正在分析的任務(wù),刪除正在分析的任務(wù),重啟已停止的分析任務(wù);如果不需要對任務(wù)進(jìn)行控制,則繼續(xù)循環(huán)查找并啟動狀態(tài)為“未啟動”的分析任務(wù);否則,開始對分析任務(wù)進(jìn)行控制操作;
S405、等待:為了減少線程循環(huán)嘗試啟動分析進(jìn)程的次數(shù),以及占用CPU的時間,將線程掛起一段時間再繼續(xù),為及時啟動狀態(tài)為“未啟動”的分析任務(wù),該等待時間應(yīng)設(shè)置為小于一秒。
如圖5所示,根據(jù)本發(fā)明的一個具體實施方式,S205(對分析過程進(jìn)行控制)具體包含如下步驟:
S501、判斷是否要停止分析任務(wù):在dump文件分析的過程中,可以對一個或多個正在執(zhí)行分析的任務(wù),或正在等待分析的任務(wù),或已停止的分析任務(wù)進(jìn)行操作;
根據(jù)本發(fā)明的一個具體實施方式,所述操作包括但不限于停止分析任務(wù),重啟分析任務(wù),刪除分析任務(wù)。其中,停止分析任務(wù)首先要終止當(dāng)前正在執(zhí)行的分析進(jìn)程,然后更新當(dāng)前分析任務(wù)狀態(tài)為“已取消”;
S502、判斷是否要刪除分析任務(wù):在dump文件分析的過程中,可以對一個或多個正在執(zhí)行分析的任務(wù),或正在等待分析的任務(wù),或已停止的分析任務(wù)進(jìn)行操作,具體操作包括停止分析任務(wù),重啟分析任務(wù),刪除分析任務(wù)。
根據(jù)本發(fā)明的一個具體實施方式,刪除分析任務(wù)首先要終止當(dāng)前正在執(zhí)行的分析進(jìn)程,然后更新該分析任務(wù)狀態(tài)為“已刪除”;
S503、判斷是否要重新啟動分析任務(wù):在dump文件分析的過程中,可以對一個或多個正在執(zhí)行分析的任務(wù),或正在等待分析的任務(wù),或已停止的分析任務(wù)進(jìn)行操作;
根據(jù)本發(fā)明的一個具體實施方式,所述操作包括停止分析任務(wù),重啟分析任務(wù),刪除分析任務(wù)。
根據(jù)本發(fā)明的一個具體實施方式,重啟分析任務(wù)首先要終止當(dāng)前正在執(zhí)行的分析進(jìn)程,然后更新該分析任務(wù)狀態(tài)為“未啟動”,等待分析任務(wù)啟動線程再次重新啟動該分析任務(wù);
S504、判斷當(dāng)前分析任務(wù)是否為“分析中”:在dump文件分析的過程中,可以對一個或多個正在執(zhí)行分析的任進(jìn)行停止,刪除,重啟操作,在這些操作中都需要先判斷當(dāng)前分析任務(wù)的狀態(tài)是否為“分析中”,如果是,則需要先終止分析進(jìn)程,否則,直接更新分析任務(wù)的狀態(tài);
S505、終止分析任務(wù)對應(yīng)的分析進(jìn)程:在dump文件分析的過程中,當(dāng)分析任務(wù)狀態(tài)為“分析中”,則表示該分析任務(wù)對應(yīng)的分析進(jìn)程還未退出,此時,若需要停止該分析任務(wù),則要終止該分析任務(wù)對應(yīng)的分析進(jìn)程;
S506、更新分析任務(wù)狀態(tài):在dump文件分析的過程中,選擇了停止分析任務(wù),或是刪除分析任務(wù),或是重啟分析任務(wù),都要先終止當(dāng)前的分析任務(wù)對應(yīng)的分析進(jìn)程,然后按照所選擇的操作更新該任務(wù)的狀態(tài)。
根據(jù)本發(fā)明的一個具體實施方式,對于要停止的分析任務(wù),則更新其狀態(tài)為“已取消”。對于要刪除的分析任務(wù),則更新其狀態(tài)為“已刪除”。對于需要重新啟動的,則更新其狀態(tài)為“未啟動”。
本發(fā)明所提供的一種分析轉(zhuǎn)儲文件的方法具有以下有益技術(shù)效果:批量、快速分析dump文件,提高了dump分析效率;通過使分析過程可見,可控,增加了對分析過程控制的靈活性。
本說明書中的各個實施例均采用遞進(jìn)的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。