一種應(yīng)用程序崩潰報告方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種應(yīng)用程序崩潰報告方法和系統(tǒng)。該方法包括:應(yīng)用程序啟動時,檢測本地是否存在該應(yīng)用程序的崩潰日志;其中,該應(yīng)用程序的崩潰日志保存有該應(yīng)用程序在崩潰之前的運行信息;如果存在所述崩潰日志,將所述崩潰日志發(fā)送到指定接收端,使得接收端根據(jù)所述崩潰日志解析出所述應(yīng)用程序在崩潰之前的運行信息,并根據(jù)所述運行信息調(diào)試所述應(yīng)用程序;在所述崩潰日志成功發(fā)送之后,在本地刪除所述崩潰日志。本發(fā)明提供的技術(shù)方案能夠解決現(xiàn)有的獲取應(yīng)用程序的崩潰日志的方式不夠便捷,會影響應(yīng)用程序的開發(fā)進度。
【專利說明】一種應(yīng)用程序崩潰報告方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機智能終端【技術(shù)領(lǐng)域】,特別是涉及一種應(yīng)用程序崩潰報告方法和系統(tǒng)。
【背景技術(shù)】
[0002]在智能終端的應(yīng)用的實際開發(fā)過程,或者在用戶在智能終端中使用應(yīng)用程序的時候,經(jīng)常會出現(xiàn)應(yīng)用程序崩潰的情況,這會導(dǎo)致用戶對應(yīng)用程序的不滿。由于我們無法要求用戶復(fù)現(xiàn)他的操作步驟,難以獲取應(yīng)用程序崩潰的原因,進而導(dǎo)致應(yīng)用程序崩潰的問題無法得到有效的解決。又或者測試人員測出程序崩潰,但是開發(fā)人員由于種種原因而導(dǎo)致無法對崩潰的問題進行很好的復(fù)現(xiàn)。在這些無法復(fù)現(xiàn)的情況下,我們可以查看崩潰報告,我們只需要根據(jù)解析出來的崩潰報告就可以直接針對對應(yīng)的崩潰的地方進行debug。
[0003]現(xiàn)有的獲取應(yīng)用程序崩潰日志的方式由以下幾種:
[0004]1、使用專門的日志操作類NSLog,將指定的崩潰信息輸出到標準的錯誤輸出上。開發(fā)人員就可以利用它在xcode的日志輸出窗口,或者是輸出到具體的文件當中。這種方案只能獲取到開發(fā)人員自身設(shè)置的調(diào)試信息,需要獲取多次日志信息才能較為準確的定位具體的崩潰發(fā)發(fā)生的位置,在一些特殊情況下,會因為崩潰日志的輸出影響應(yīng)用程序的性能導(dǎo)致無法定位到崩潰發(fā)生的位置。
[0005]2、使用智能終端中的應(yīng)用程序自帶的崩潰報告機制,將智能終端設(shè)備與PC連接。在xcode的Organizer下面找到相應(yīng)Device設(shè)備,選擇DeviceLog標簽,找到相應(yīng)的崩潰日志。
[0006]上述的崩潰日志的獲取方式需要將保存有崩潰日志的智能終端設(shè)備與pc直接相連接。不能及時的獲取到對應(yīng)的崩潰日志。從而導(dǎo)致影響了應(yīng)用程序的開發(fā)進度以及應(yīng)用程序崩潰原因的排除。
[0007]綜上所述,現(xiàn)有的獲取應(yīng)用程序的崩潰日志的方式不夠便捷,會影響應(yīng)用程序的開發(fā)進度。
【發(fā)明內(nèi)容】
[0008]本發(fā)明提供了一種應(yīng)用程序崩潰報告方法和系統(tǒng),本發(fā)明提供的技術(shù)方案能解決現(xiàn)有的獲取應(yīng)用程序的崩潰日志的方式不夠便捷,會影響應(yīng)用程序的開發(fā)進度的問題。
[0009]本發(fā)明公開了一種應(yīng)用程序崩潰報告方法,該方法包括:
[0010]應(yīng)用程序啟動時,檢測本地是否存在該應(yīng)用程序的崩潰日志;其中,該應(yīng)用程序的崩潰日志保存有該應(yīng)用程序在崩潰之前的運行信息;
[0011]如果存在所述崩潰日志,將所述崩潰日志發(fā)送到指定接收端,使得接收端根據(jù)所述崩潰日志解析出所述應(yīng)用程序在崩潰之前的運行信息,并根據(jù)所述運行信息調(diào)試所述應(yīng)用程序;
[0012]在所述崩潰日志成功發(fā)送之后,在本地刪除所述崩潰日志。
[0013]在上述方法中,所述將所述崩潰日志發(fā)送到指定接收端包括:
[0014]將所述崩潰日志作為郵件的附件,通過郵件發(fā)送到指定郵箱。
[0015]在上述方法中,在運行所述應(yīng)用程序的智能終端的操作系統(tǒng)為1S的情況下,
[0016]所述將所述崩潰日志作為郵件的附件,通過郵件發(fā)送到指定郵箱包括:
[0017]將所述崩潰日志通過特定的協(xié)議轉(zhuǎn)化為可導(dǎo)出的崩潰日志參考文件,將所述崩潰日志參考文件作為郵件的附件,通過郵件發(fā)送到指定郵箱。
[0018]在上述方法中,所述接收端根據(jù)所述崩潰日志解析出所述應(yīng)用程序在崩潰之前的運行信息包括:
[0019]從所述指定郵箱獲取崩潰日志參考文件;
[0020]通過解析腳本,根據(jù)與所述崩潰日志參考文件對應(yīng)的應(yīng)用程序和對應(yīng)的應(yīng)用程序開發(fā)過程中生成的符號文件,對所述崩潰日志參考文件進行解析,得到崩潰日志解析文件。
[0021]在上述方法中,得到崩潰日志解析文件之后,該方法還包括:
[0022]根據(jù)崩潰日志解析文件中的崩潰原因,從所述應(yīng)用程序中獲取對應(yīng)的虛擬內(nèi)存地址,從所述崩潰日志解析文件中獲取對應(yīng)的調(diào)用棧地址和程序加載起始地址;
[0023]根據(jù)公式:實際運行地址=Slide+調(diào)用棧地址-程序加載起始地址+誤差修正值,計算應(yīng)用程序發(fā)生所述崩潰的實際地址;
[0024]其中,slide是所述虛擬內(nèi)存地址通過執(zhí)行otool命令得到的值,所述誤差修正值根據(jù)多次測試得到。
[0025]本發(fā)明還公開了一種應(yīng)用程序崩潰報告系統(tǒng),該系統(tǒng)包括:報告端和接收端;所述報告端包括:崩潰日志檢測模塊、崩潰日志發(fā)送模塊和崩潰日志刪除模塊;其中,
[0026]崩潰日志檢測模塊,用于在應(yīng)用程序啟動時,檢測本地是否存在該應(yīng)用程序的崩潰日志;其中,該應(yīng)用程序的崩潰日志保存有該應(yīng)用程序在崩潰之前的運行信息;
[0027]崩潰日志發(fā)送模塊,用于在存在所述崩潰日志時,將所述崩潰日志發(fā)送到指定接收端,使得接收端根據(jù)所述崩潰日志解析出所述應(yīng)用程序在崩潰之前的運行信息,并根據(jù)所述運行信息調(diào)試所述應(yīng)用程序;
[0028]崩潰日志刪除模塊,用于在所述崩潰日志成功發(fā)送之后,在本地刪除所述崩潰日
O
[0029]在上述系統(tǒng)中,所述崩潰日志發(fā)送模塊,用于將所述崩潰日志作為郵件的附件,通過郵件發(fā)送到指定郵箱。
[0030]在上述系統(tǒng)中,在運行所述應(yīng)用程序的智能終端的操作系統(tǒng)為1S的情況下,
[0031]所述崩潰日志發(fā)送模塊包括:崩潰日志轉(zhuǎn)換單元;
[0032]所述崩潰日志轉(zhuǎn)換單元,用于將所述崩潰日志通過特定的協(xié)議轉(zhuǎn)化為可導(dǎo)出的崩潰日志參考文件。
[0033]在上述系統(tǒng)中,所述接收端,用于從所述指定郵箱獲取崩潰日志參考文件;通過解析腳本,根據(jù)與所述崩潰日志參考文件對應(yīng)的應(yīng)用程序和對應(yīng)的應(yīng)用程序開發(fā)過程中生成的符號文件,對所述崩潰日志參考文件進行解析,得到崩潰日志解析文件。
[0034]在上述系統(tǒng)中,所述接收端,還用于根據(jù)崩潰日志解析文件中的崩潰原因,從所述應(yīng)用程序中獲取對應(yīng)的虛擬內(nèi)存地址,從所述崩潰日志解析文件中獲取對應(yīng)的調(diào)用棧地址和程序加載起始地址;
[0035]根據(jù)公式:實際運行地址=Slide+調(diào)用棧地址-程序加載起始地址+誤差修正值,計算應(yīng)用程序發(fā)生所述崩潰的實際地址;
[0036]其中,slide是所述虛擬內(nèi)存地址通過執(zhí)行otool命令得到的值,所述誤差修正值根據(jù)多次測試得到。
[0037]綜上所述,本發(fā)明提供的技術(shù)方案中,通過將在應(yīng)用程序崩潰之后生成的崩潰日志轉(zhuǎn)化成可導(dǎo)出的崩潰日志參考文件后,通過郵件發(fā)送給指定端。開發(fā)人員獲取到該崩潰日志參考文件后進行解析,并對得到的崩潰日志解析文件進行內(nèi)存偏移誤差的修正,使得開發(fā)人員能夠得到與直連PC方式相同的崩潰日志。避免了每次獲取應(yīng)用程序的崩潰日志都需要將智能終端與PC直連的繁瑣步驟。節(jié)省開發(fā)人員獲取崩潰日志的步驟和時間,間接加快了開發(fā)人員的工作效率以及應(yīng)用程序的開發(fā)周期。
【專利附圖】
【附圖說明】
[0038]圖1是本發(fā)明中一種應(yīng)用程序崩潰報告方法的流程圖;
[0039]圖2是本發(fā)明具體實施例中的應(yīng)用程序崩潰報告的程序流程圖;
[0040]圖3是本發(fā)明中一種應(yīng)用程序崩潰報告系統(tǒng)的結(jié)構(gòu)示意圖;
[0041]圖4是本發(fā)明中一種應(yīng)用程序崩潰報告系統(tǒng)的詳細結(jié)構(gòu)示意圖。
【具體實施方式】
[0042]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
[0043]圖1是本發(fā)明中一種應(yīng)用程序崩潰報告方法的流程圖;如圖1所示,該方法包括如下步驟:
[0044]步驟101,應(yīng)用程序啟動時,檢測本地是否存在該應(yīng)用程序的崩潰日志;其中,該應(yīng)用程序的崩潰日志保存有該應(yīng)用程序在崩潰之前的運行信息。
[0045]步驟102,如果存在崩潰日志,將崩潰日志發(fā)送到指定接收端,使得接收端根據(jù)崩潰日志解析出應(yīng)用程序在崩潰之前的運行信息,并根據(jù)運行信息調(diào)試所述應(yīng)用程序。
[0046]步驟103,在崩潰日志成功發(fā)送之后,在本地刪除崩潰日志。
[0047]圖2是本發(fā)明中一種應(yīng)用程序崩潰報告方法的詳細流程圖。參見圖2所示,該方法包括如下步驟:
[0048]步驟201,程序啟動。
[0049]步驟202,檢測崩潰日志參考文件是否存在。如果存在則進行步驟203,如果不存在則進行步驟204。
[0050]步驟203,發(fā)送崩潰日志,將已經(jīng)發(fā)送過的崩潰日志在本地刪除。
[0051]在本發(fā)明的一種實施例中,通過郵件系統(tǒng)發(fā)送崩潰日志。則將崩潰日志發(fā)送到指定接收端具體為:將崩潰日志作為郵件的附件,通過郵件發(fā)送到指定郵箱。
[0052]在上述實施例中,運行該應(yīng)用程序的智能終端中預(yù)先設(shè)置好郵件賬戶,將指定郵箱作為收件人,將對應(yīng)的崩潰日志作為郵件的附件發(fā)送出去。并且,由于應(yīng)用程序每次啟動之后,都會在本地檢查是有存在對應(yīng)的崩潰日志,為了防止存在已經(jīng)發(fā)送的崩潰日志對應(yīng)用程序的崩潰原因造成誤判,較佳的,在在發(fā)送完對應(yīng)的崩潰日志之后,同時將已經(jīng)發(fā)送過的崩潰日志從本地刪除。
[0053]步驟204,應(yīng)用程序正常啟動。
[0054]步驟205,當應(yīng)用程序在運行過程中,出現(xiàn)嚴重錯誤導(dǎo)致崩潰,在本地保存崩潰日
O
[0055]在本步驟中,在應(yīng)用程序運行過程出現(xiàn)崩潰,將崩潰日志保存在本地的指定目錄下。其中在崩潰日志中,記錄當前程序在之前運行過程中執(zhí)行過的函數(shù)名稱,模塊名稱以及崩潰的行數(shù)等信息。
[0056]在本發(fā)明的一種具體實施例中,在運行所述應(yīng)用程序的智能終端的操作系統(tǒng)為1S的情況下,在步驟203中,將所述崩潰日志作為郵件的附件,通過郵件發(fā)送到指定郵箱具體為:將崩潰日志通過特定的協(xié)議轉(zhuǎn)化為可導(dǎo)出的崩潰日志參考文件,將崩潰日志參考文件作為郵件的附件,通過郵件發(fā)送到指定郵箱。其原因在于,在1S智能終端操作系統(tǒng)下,不能從本地直接獲取崩潰日志(.synced文件)將該崩潰日志通過郵件發(fā)送給指定端。因此,只能先在本地將崩潰日志(.synced文件)通過google protobuf協(xié)議轉(zhuǎn)化為可導(dǎo)出的崩潰日志參考文件(.crash文件)。再將崩潰日志參考文件發(fā)送給接收端,即發(fā)送給相關(guān)的開發(fā)人員。
[0057]應(yīng)用程序的開發(fā)人員從指定郵件取得與該應(yīng)用程序?qū)?yīng)的崩潰日志參考文件之后,需要對該崩潰日志參考文件進行解析。具體為:通過解析腳本,根據(jù)與所述崩潰日志參考文件對應(yīng)的應(yīng)用程序和對應(yīng)的應(yīng)用程序開發(fā)過程中生成的符號文件,對所述崩潰日志參考文件進行解析,得到崩潰日志解析文件。
[0058]在本發(fā)明的一種實施例中,以1S系統(tǒng)為例,應(yīng)用程序的開發(fā)人員將獲取到的崩潰日志參考文件(.crash文件),以及對應(yīng)的應(yīng)用程序和對應(yīng)的應(yīng)用程序開發(fā)過程中生成的符號文件(.dsym文件)放置到同一個目錄下,通過解析腳本進行解析,得到對應(yīng)的崩潰日志解析文件。其中,解析腳本中對應(yīng)的解析命令為:symbolicatecrash+xxx.crash文件+xxx.app.dsym+〉+輸出到的文件。
[0059]在1S系統(tǒng)中,symbolicatecrash是Xcode自身提供的解析腳本,解析得到的崩潰日志解析文件與直連PC之后獲取到的崩潰之間之間存在一定的內(nèi)存地址偏移。因此,還需要對崩潰日志解析文件進行內(nèi)存地址偏移誤差修正,才能得到與崩潰日志中一致的信息。
[0060]在本發(fā)明的一種實施例中,得到崩潰日志解析文件之后,根據(jù)崩潰日志解析文件中的崩潰原因,從所述應(yīng)用程序中獲取對應(yīng)的虛擬內(nèi)存地址,從所述崩潰日志解析文件中獲取對應(yīng)的調(diào)用棧地址和程序加載起始地址;根據(jù)公式:實際運行地址=Slide+調(diào)用棧地址-程序加載起始地址+誤差修正值,計算應(yīng)用程序發(fā)生該崩潰的實際地址;其中,slide是所述虛擬內(nèi)存地址通過執(zhí)行otool命令得到的值,所述誤差修正值根據(jù)多次測試得到。
[0061]下面以feilia0.app為具體實施例,上述的誤差修改進行詳細描述。
[0062]首先,使用otool命令來獲取虛擬內(nèi)存地址vmaddr。
[0063]其中,獲取虛擬內(nèi)存地址的運行命令為:otool - arch armv7_l feilia0.app/feiliao|grep-B3-A8_m2〃—TEXT〃|grep vmaddr。
[0064]其中,處理器為arm v7架構(gòu)的虛擬內(nèi)存地址通常是0x1000。feilia0.app為應(yīng)用程序,feiliao為應(yīng)用程序的名稱。gr印-B3-A8-m2〃—TEXT"是查找應(yīng)用程序加載代碼段的文本,grep vmaddr是查找虛擬內(nèi)存地址。
[0065]針對崩潰日志解析文件中的一個崩潰原因,針對該崩潰原因?qū)?yīng)的帶解析crash行,feiliao 0x00253bd30x28000+2276307o
[0066]通過解析命令:atos_archarmv7-o feilia0.app/feiIiao0x22CBCC。
[0067]得到對應(yīng)的解析結(jié)果:feiliao0x00253bd3—51_[MessagePumper doProcessEvent:atlndex:withObject:]_block_invoke_0(in feiliao)(MessagePumper.m:63)
[0068]根據(jù)公式:實際運行地址=0x1000 (silde)+0x00253bd3(調(diào)用棧地址)-0x28000 (程序加載起始地址)+7 (誤差修正值)=0xl000 (slide) +2276307 (需要轉(zhuǎn)十六進制)+7 (誤差修正值)
[0069]其中,對于一個應(yīng)用程序,其誤差修正值為定值,可以根據(jù)預(yù)先計算得到,0x00253bd3 = 0x28000 + 2276307。
[0070]1.0x28000是對應(yīng)的程序加載起始地址。
[0071]2.0x00253bd3是對應(yīng)的調(diào)用棧地址。
[0072]3.虛擬內(nèi)存地址是slide地址(通常是0x1000)。
[0073]綜上所述,對崩潰日志參考文件的解析的整體思路:首先從應(yīng)用程序包中獲取到虛擬內(nèi)存地址,然后根據(jù)公式“實際運行地址=Slide+調(diào)用棧地址-程序加載起始地址+誤差修正值”,計算出實際運行地址,開發(fā)人員可以根據(jù)計算出的實際運行的地址進行debug。
[0074]在本發(fā)明的一種具體實施例中,在崩潰日志參考文件進行解析之后,將得到的應(yīng)用程序在崩潰之前運行信息輸出到一個開發(fā)人員可讀的文本文檔中。其中,運行信息包括:應(yīng)用程序在崩潰之前所執(zhí)行的線程信息、崩潰原因,正在執(zhí)行的函數(shù)調(diào)用堆棧,當前系統(tǒng)版本號等信息。
[0075]本發(fā)明還提供了一種應(yīng)用程序崩潰報告系統(tǒng),該系統(tǒng)能夠解決現(xiàn)有的應(yīng)用程序在崩潰之后在本地生成對應(yīng)的崩潰日志,開發(fā)人員只能通過將運行該應(yīng)用程序的智能終端與PC直連,獲取該崩潰日志,導(dǎo)致對應(yīng)用程序中出現(xiàn)的崩潰進行調(diào)試的問題難以解決。
[0076]圖3是本發(fā)明中一種應(yīng)用程序崩潰報告系統(tǒng)的結(jié)構(gòu)示意圖,如圖3所示,該系統(tǒng)包括:報告端301和接收端302。報告端301包括:崩潰日志檢測模塊3011、崩潰日志發(fā)送模塊3012和崩潰日志刪除模塊3013。
[0077]崩潰日志檢測模塊3011,用于在應(yīng)用程序啟動時,檢測本地是否存在該應(yīng)用程序的崩潰日志;其中,該應(yīng)用程序的崩潰日志保存有該應(yīng)用程序在崩潰之前的運行信息;
[0078]崩潰日志發(fā)送模塊3012,用于在存在所述崩潰日志時,將所述崩潰日志發(fā)送到指定接收端,使得接收端根據(jù)所述崩潰日志解析出所述應(yīng)用程序在崩潰之前的運行信息,并根據(jù)所述運行信息調(diào)試所述應(yīng)用程序;
[0079]崩潰日志刪除模塊3013,用于在所述崩潰日志成功發(fā)送之后,在本地刪除所述崩潰日志。
[0080]在本發(fā)明的一種實施例中,崩潰日志發(fā)送模塊3012,用于將崩潰日志作為郵件的附件,通過郵件發(fā)送到指定郵箱。
[0081]圖4是本發(fā)明中一種應(yīng)用程序崩潰報告系統(tǒng)的詳細結(jié)構(gòu)示意圖,如圖4所示,在運行所述應(yīng)用程序的智能終端的操作系統(tǒng)為1S的情況下,
[0082]崩潰日志發(fā)送模塊3012包括:崩潰日志轉(zhuǎn)換單元3014 ;
[0083]所述崩潰日志轉(zhuǎn)換單元3014,用于將崩潰日志通過特定的協(xié)議轉(zhuǎn)化為可導(dǎo)出的崩潰日志參考文件。
[0084]在本發(fā)明的一種實施例中,述接收端,用于從指定郵箱獲取崩潰日志參考文件;通過解析腳本,根據(jù)與所述崩潰日志參考文件對應(yīng)的應(yīng)用程序和對應(yīng)的應(yīng)用程序開發(fā)過程中生成的符號文件,對所述崩潰日志參考文件進行解析,得到崩潰日志解析文件。
[0085]在本發(fā)明的一種實施例中,接收端,還用于根據(jù)崩潰日志解析文件中的崩潰原因,從所述應(yīng)用程序中獲取對應(yīng)的虛擬內(nèi)存地址,從所述崩潰日志解析文件中獲取對應(yīng)的調(diào)用棧地址和程序加載起始地址;
[0086]根據(jù)公式:實際運行地址=Slide+調(diào)用棧地址-程序加載起始地址+誤差修正值,計算應(yīng)用程序發(fā)生所述崩潰的實際地址;
[0087]其中,slide是所述虛擬內(nèi)存地址通過執(zhí)行otool命令得到的值,所述誤差修正值根據(jù)多次測試得到。
[0088]綜上所述,本發(fā)明提供的技術(shù)方案中,通過將在應(yīng)用程序崩潰之后生成的崩潰日志轉(zhuǎn)化成可導(dǎo)出的崩潰日志參考文件后,通過郵件發(fā)送給指定端。開發(fā)人員獲取到該崩潰日志參考文件后進行解析,并對得到的崩潰日志解析文件進行內(nèi)存偏移誤差的修正,使得開發(fā)人員能夠得到與直連PC方式相同的崩潰日志。避免了每次獲取應(yīng)用程序的崩潰日志都需要將智能終端與PC直連的繁瑣步驟。節(jié)省開發(fā)人員獲取崩潰日志的步驟和時間,間接加快了開發(fā)人員的工作效率以及應(yīng)用程序的開發(fā)周期。
[0089]以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內(nèi)。
【權(quán)利要求】
1.一種應(yīng)用程序崩潰報告方法,其特征在于,該方法包括: 應(yīng)用程序啟動時,檢測本地是否存在該應(yīng)用程序的崩潰日志;其中,該應(yīng)用程序的崩潰日志保存有該應(yīng)用程序在崩潰之前的運行信息; 如果存在所述崩潰日志,將所述崩潰日志發(fā)送到指定接收端,使得接收端根據(jù)所述崩潰日志解析出所述應(yīng)用程序在崩潰之前的運行信息,并根據(jù)所述運行信息調(diào)試所述應(yīng)用程序; 在所述崩潰日志成功發(fā)送之后,在本地刪除所述崩潰日志。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述崩潰日志發(fā)送到指定接收端包括: 將所述崩潰日志作為郵件的附件,通過郵件發(fā)送到指定郵箱。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在運行所述應(yīng)用程序的智能終端的操作系統(tǒng)為1S的情況下, 所述將所述崩潰日志作為郵件的附件,通過郵件發(fā)送到指定郵箱包括: 將所述崩潰日志通過特定的協(xié)議轉(zhuǎn)化為可導(dǎo)出的崩潰日志參考文件,將所述崩潰日志參考文件作為郵件的附件,通過郵件發(fā)送到指定郵箱。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于, 所述接收端根據(jù)所述崩潰日志解析出所述應(yīng)用程序在崩潰之前的運行信息包括: 從所述指定郵箱獲取崩潰日志參考文件; 通過解析腳本,根據(jù)與所述崩潰日志參考文件對應(yīng)的應(yīng)用程序和對應(yīng)的應(yīng)用程序開發(fā)過程中生成的符號文件,對所述崩潰日志參考文件進行解析,得到崩潰日志解析文件。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,得到崩潰日志解析文件之后,該方法還包括: 根據(jù)崩潰日志解析文件中的崩潰原因,從所述應(yīng)用程序中獲取對應(yīng)的虛擬內(nèi)存地址,從所述崩潰日志解析文件中獲取對應(yīng)的調(diào)用棧地址和程序加載起始地址; 根據(jù)公式:實際運行地址=Slide+調(diào)用棧地址-程序加載起始地址+誤差修正值,計算應(yīng)用程序發(fā)生所述崩潰的實際地址; 其中,slide是所述虛擬內(nèi)存地址通過執(zhí)行otool命令得到的值,所述誤差修正值根據(jù)多次測試得到。
6.一種應(yīng)用程序崩潰報告系統(tǒng),其特征在于,該系統(tǒng)包括:報告端和接收端;所述報告端包括:崩潰日志檢測模塊、崩潰日志發(fā)送模塊和崩潰日志刪除模塊;其中, 崩潰日志檢測模塊,用于在應(yīng)用程序啟動時,檢測本地是否存在該應(yīng)用程序的崩潰日志;其中,該應(yīng)用程序的崩潰日志保存有該應(yīng)用程序在崩潰之前的運行信息; 崩潰日志發(fā)送模塊,用于在存在所述崩潰日志時,將所述崩潰日志發(fā)送到指定接收端,使得接收端根據(jù)所述崩潰日志解析出所述應(yīng)用程序在崩潰之前的運行信息,并根據(jù)所述運行信息調(diào)試所述應(yīng)用程序; 崩潰日志刪除模塊,用于在所述崩潰日志成功發(fā)送之后,在本地刪除所述崩潰日志。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于, 所述崩潰日志發(fā)送模塊,用于將所述崩潰日志作為郵件的附件,通過郵件發(fā)送到指定郵箱。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,在運行所述應(yīng)用程序的智能終端的操作系統(tǒng)為1S的情況下, 所述崩潰日志發(fā)送模塊包括:崩潰日志轉(zhuǎn)換單元; 所述崩潰日志轉(zhuǎn)換單元,用于將所述崩潰日志通過特定的協(xié)議轉(zhuǎn)化為可導(dǎo)出的崩潰日志參考文件。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于, 所述接收端,用于從所述指定郵箱獲取崩潰日志參考文件;通過解析腳本,根據(jù)與所述崩潰日志參考文件對應(yīng)的應(yīng)用程序和對應(yīng)的應(yīng)用程序開發(fā)過程中生成的符號文件,對所述崩潰日志參考文件進行解析,得到崩潰日志解析文件。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于, 所述接收端,還用于根據(jù)崩潰日志解析文件中的崩潰原因,從所述應(yīng)用程序中獲取對應(yīng)的虛擬內(nèi)存地址,從所述崩潰日志解析文件中獲取對應(yīng)的調(diào)用棧地址和程序加載起始地址; 根據(jù)公式:實際運行地址=Slide+調(diào)用棧地址-程序加載起始地址+誤差修正值,計算應(yīng)用程序發(fā)生所述崩潰的實際地址; 其中,slide是所述虛擬內(nèi)存地址通過執(zhí)行otool命令得到的值,所述誤差修正值根據(jù)多次測試得到。
【文檔編號】G06F11/34GK104516732SQ201310456168
【公開日】2015年4月15日 申請日期:2013年9月29日 優(yōu)先權(quán)日:2013年9月29日
【發(fā)明者】張應(yīng)龍 申請人:北京新媒傳信科技有限公司