取應(yīng)用的崩潰信息。
[0090]本實施例中,所述應(yīng)用程序文件包括dex文件和SO文件;所述SO文件為所述應(yīng)用程序文件中dex文件進(jìn)行加密保護(hù)的代碼或者應(yīng)用程序文件中的dex文件核心代碼。
[0091]本實施例中,崩潰信息可包括崩潰的進(jìn)程、崩潰的線程、堆棧信息、寄存器信息、調(diào)用棧信息和Map信息中的一種或幾種,以用于崩潰位置的確定。
[0092]本實施例中,應(yīng)用發(fā)生崩潰的原因可為應(yīng)用程序中存在缺陷(Bug),也可以為殼程序文件中存在Bug。
[0093]在本申請實施例中,應(yīng)用的殼程序文件中不僅包括應(yīng)用程序文件,寫入單元10還將守護(hù)文件作為代碼數(shù)據(jù)寫入應(yīng)用的殼程序文件中,從而處理單元20在運(yùn)行所述殼程序文件,應(yīng)用發(fā)生崩潰時,獲取單元30能夠通過守護(hù)文件獲取該應(yīng)用的崩潰信息。在保護(hù)應(yīng)用程序文件的基礎(chǔ)上,能夠快速準(zhǔn)確的獲取文件的崩潰信息,定位發(fā)生崩潰的位置,方便后續(xù)對發(fā)生崩潰的文件中Bug進(jìn)行清除,提高應(yīng)用運(yùn)行的穩(wěn)定性。
[0094]圖5為本發(fā)明圖4實施例中的處理單元20的示意圖。本實施例中,處理單元20進(jìn)一步包括:
[0095]第一執(zhí)行單元202,用于啟動殼程序文件,并運(yùn)行殼程序文件中的守護(hù)文件;
[0096]信號注冊單元204,用于守護(hù)進(jìn)程在主進(jìn)程中注冊各類崩潰信息對應(yīng)的信號,守護(hù)進(jìn)程與守護(hù)程序文件對應(yīng),主進(jìn)程與殼程序文件對應(yīng);
[0097]第二執(zhí)行單元206,用于運(yùn)行應(yīng)用程序文件;
[0098]崩潰確定單元208,用于在主進(jìn)程獲取信息時,確定應(yīng)用發(fā)生崩潰。
[0099]圖6為本發(fā)明圖4實施例中的獲取單元30的示意圖。本實施例中,獲取單元30進(jìn)一步包括:
[0100]信息交互單元302,用于守護(hù)進(jìn)程與主進(jìn)程進(jìn)行信息交互;
[0101]信息確定單元304,用于守護(hù)進(jìn)程根據(jù)主進(jìn)程獲取的信號確定崩潰進(jìn)程,獲取應(yīng)用的崩潰ig息。
具體的,守護(hù)進(jìn)程通過handler與主進(jìn)程進(jìn)行信息交互。Handler能夠接受守護(hù)線程發(fā)送的數(shù)據(jù),并用此數(shù)據(jù)配合主線程更新。
[0103]在再一個實施例中,SO文件包括debug代碼。信息確定單元304在用于守護(hù)進(jìn)程根據(jù)主進(jìn)程獲取的信號確定崩潰進(jìn)程,獲取應(yīng)用的崩潰信息時包括:守護(hù)進(jìn)程與崩潰進(jìn)程進(jìn)行交互,利用SO文件中debug代碼通過系統(tǒng)調(diào)用棧逐步回溯,直至回溯失敗,確定崩潰函數(shù)的位置。
[0104]本實施例中,守護(hù)進(jìn)程通過ptrace系統(tǒng)接口與崩潰進(jìn)程進(jìn)行交互。
[0?05]與上一實施例相比,本實施例信息確定單元304利用SO文件中debug代碼通過系統(tǒng)調(diào)用棧逐步回溯,以定位應(yīng)用崩潰時,崩潰函數(shù)的位置。方便后續(xù)Bug的查找和修改,進(jìn)而提高殼程序文件與應(yīng)用程序的兼容性以及應(yīng)用運(yùn)行的穩(wěn)定性。
[0106]圖7為本發(fā)明另一實施例中的應(yīng)用崩潰日志的獲取裝置的示意圖。與圖4相比,圖7中應(yīng)用崩潰日志的獲取裝置還包括:
[0107]信息發(fā)送單元40,用于將所獲取的崩潰信息發(fā)送至殼程序文件的開發(fā)方或者應(yīng)用程序文件的開發(fā)方。
[0108]本實施例中,崩潰信息可包括崩潰的進(jìn)程、崩潰的線程、堆棧信息、寄存器信息、調(diào)用棧信息和Map信息中的一種或幾種,以用于崩潰位置的確定。
[0109]與圖4中實施例相比,本實施例還通過信息發(fā)送單元40將所獲取的崩潰信息發(fā)送至殼程序文件的開發(fā)方或者應(yīng)用程序文件的開發(fā)方,方便開發(fā)者及時查看崩潰信息,確定崩潰位置,以及查找崩潰原因,利于殼程序文件中Bug的及時查找和清除,提高了應(yīng)用運(yùn)行的穩(wěn)定性。
[0110]在另一個實施例中,崩潰信息還可包括安裝應(yīng)用的設(shè)備型號。殼程序文件的開發(fā)方或者應(yīng)用程序文件的開發(fā)方在安裝應(yīng)用的設(shè)備型號之后,能夠?qū)こ绦蛭募惭b于對應(yīng)的設(shè)備中,進(jìn)行場景重現(xiàn),便于開發(fā)方查找和清除殼程序文件中的Bug,提高應(yīng)用運(yùn)行的穩(wěn)定性。
[0111]圖8為本發(fā)明圖7實施例中的信息發(fā)送單元的示意圖。如圖8所示,在另一個實施例中,信息發(fā)送單元還可包括:
[0112]時間設(shè)定單元402,用于設(shè)定預(yù)設(shè)時間;
[0113]郵件發(fā)送單元404,用于每隔預(yù)設(shè)時間,通過郵件將所獲取的崩潰信息發(fā)送至殼程序文件的開發(fā)方或者應(yīng)用程序文件的開發(fā)方。
[0114]與上一實施例相比,本實施例提供了通知開發(fā)方崩潰信息的郵件,能夠提醒開發(fā)者及時查看崩潰信息,確定崩潰位置,以及查找崩潰原因,利于殼代碼文件中Bug的及時查找和清除,提高了應(yīng)用運(yùn)行的穩(wěn)定性。
[0115]在本申請實施例中,應(yīng)用的殼程序文件中不僅包括應(yīng)用程序文件,還將守護(hù)文件作為代碼數(shù)據(jù)寫入應(yīng)用的殼程序文件中,從而在運(yùn)行殼程序文件時,若應(yīng)用發(fā)生崩潰,能夠通過守護(hù)文件獲取該應(yīng)用的崩潰信息。在保護(hù)應(yīng)用程序文件的基礎(chǔ)上,能夠快速準(zhǔn)確的獲取文件的崩潰信息,定位發(fā)生崩潰的位置,方便后續(xù)對發(fā)生崩潰的文件中Bug進(jìn)行清除,提高應(yīng)用運(yùn)行的穩(wěn)定性。
[0116]本發(fā)明實施例提供了以下技術(shù)方案:
[0117]1、一種應(yīng)用崩潰日志的獲取方法,包括:
[0118]將守護(hù)文件作為代碼數(shù)據(jù)寫入應(yīng)用的殼程序文件中,所述殼程序文件還包括應(yīng)用程序文件;
[0119]運(yùn)行所述殼程序文件;
[0120]判斷所述應(yīng)用是否發(fā)生崩潰;
[0121]若是,則通過所述守護(hù)文件獲取所述應(yīng)用的崩潰信息。
[0122]2、根據(jù)I所述的應(yīng)用崩潰日志的獲取方法,所述應(yīng)用程序文件包括dex文件和SO文件;所述SO文件為所述應(yīng)用程序文件中dex文件進(jìn)行加密保護(hù)的代碼或者應(yīng)用程序文件中的dex文件核心代碼。
[0123]3、根據(jù)I或2所述的應(yīng)用崩潰日志的獲取方法,判斷所述應(yīng)用是否發(fā)生崩潰包括:
[0124]啟動所述殼程序文件,并運(yùn)行所述殼程序文件中的守護(hù)文件;
[0125]守護(hù)進(jìn)程在主進(jìn)程中注冊各類崩潰信息對應(yīng)的信號,所述守護(hù)進(jìn)程與所述守護(hù)程序文件對應(yīng),所述主進(jìn)程與所述殼程序文件對應(yīng);
[0126]運(yùn)行所述應(yīng)用程序文件;
[0127]在所述主進(jìn)程獲取所述信號時,確定所述應(yīng)用發(fā)生崩潰。
[0128]4、根據(jù)3所述的應(yīng)用崩潰日志的獲取方法,通過所述守護(hù)文件獲取所述應(yīng)用的崩潰信息包括:
[0129]所述守護(hù)進(jìn)程與所述主進(jìn)程進(jìn)行信息交互;
[0130]所述守護(hù)進(jìn)程根據(jù)所述主進(jìn)程獲取的信號確定崩潰進(jìn)程,獲取所述應(yīng)用的崩潰信息。
[0131]5、根據(jù)4所述的應(yīng)用崩潰日志的獲取方法,所述守護(hù)進(jìn)程通過handler與所述主進(jìn)程進(jìn)行信息交互。
[0132]6、根據(jù)4所述的應(yīng)用崩潰日志的獲取方法,所述SO文件包括debug代碼;所述守護(hù)進(jìn)程根據(jù)所述主進(jìn)程獲取的信號確定崩潰進(jìn)程,獲取所述應(yīng)用的崩潰信息包括:
[0133]所述守護(hù)進(jìn)程與所述崩潰進(jìn)程進(jìn)行交互,利用所述SO文件中debug代碼通過系統(tǒng)調(diào)用棧逐步回溯,直至回溯失敗,確定崩潰函數(shù)的位置。
[0134]7、根據(jù)6所述的應(yīng)用崩潰日志的獲取方法,所述守護(hù)進(jìn)程通過ptrace系統(tǒng)接口與所述崩潰進(jìn)程進(jìn)行交互。
[0135]8、根據(jù)I所述的應(yīng)用崩潰日志的獲取方法,在通過所述守護(hù)文件獲取所述應(yīng)用的崩潰信息之后,所述應(yīng)用崩潰日志的獲取方法還包括:將所獲取的崩潰信息發(fā)送至所述殼程序文件的開發(fā)方或者所述應(yīng)用程序文件的開發(fā)方。
[0136]9、根據(jù)8所述的應(yīng)用崩潰日志的獲取方法,每隔預(yù)設(shè)時間,通過郵件將所獲取的崩潰信息發(fā)送至所述殼程序文件的開發(fā)方或者所述應(yīng)用程序文件的開發(fā)方。
[0137]10、根據(jù)I所述的應(yīng)用崩潰日志的獲取方法,所述崩潰信息包括崩潰的進(jìn)程、崩潰的線程、堆棧信息、寄存器信息、調(diào)用棧信息和Map信息中的一種或幾種。