工作了這么久,但是還是沒有好好的處理一下線上的Crash以及用戶手機的Crash,正好公司要求,然后今天處理一下,做個記錄
我們公司使用的是友盟的Crash統計,今天就說說如何通過友盟找出線上的Crash.
估計其他的也都如此,不在贅述:
需要的東西:
- 1.Crash的文件(在友盟后臺,他們默認將Crash放到了execel表中)
- 2.dYSM文件(Crash版本必須使用對應包的dYSM文件,否則不成功)
- 3.友盟的
umcrashtool
工具
具體實施:
1.獲取Crash的文件
圖1.友盟的后臺獲取Crash文檔
圖2.奔潰日志列表
圖3.友盟錯誤詳情,但是全都是內存地址,看不懂
2.獲取dYSM文件
這個一定要使用對應Crash的版本,切記
圖4.在包列表中找到對應的版本
圖5.找到.xcarchive結尾的,右鍵顯示包內容
圖6.拷貝.dSYM文件
目標位置:~/Library/Developer/Xcode/
圖7.放置完畢效果圖
3.設置友盟的umcrashtool工具
圖8.友盟工具獲取的地址
圖9.將友盟工具和Crash日志文件放到桌面的文件夾中
圖10.拖工具和execl表到命令行,然后回車,符號化日志,獲取結果
友盟的日志要重上往下讀,應為有start,end
剩下的就是自己看這個然后獲取具體的bug信息,查找問題了
其他
剛才說的,是使用友盟的東西,但是如果說用戶使用了我們的app,但是我們沒使用其他第三方工具手機Crash日志,怎么辦?
這里就不得不說說如何手機Crash日志的方法了:
1.通過用戶的手機獲取
2.通過Xcode獲取
3.通過iTunsConnect
iOS設備上的應用閃退時, 操作系統會聲稱一個崩潰日志, 保存在設備上。
路徑是: 設置 -> 隱私 ->診斷與用量 ->診斷與用量數據。在這里可以看到設備上所有的設備崩潰日志.
- 1.連接設備獲取崩潰日志
設備與電腦上的ITunes Store同步后, 會將崩潰日志保存在電腦上,崩潰日志保存在以下位置:
設備與電腦上的iTunes Store同步后,會將崩潰日志保存在電腦上。根據電腦操作系統的不同,崩潰日志將保存在以下位置:
Mac OS X:~/Library/Logs/CrashReporter/MobileDevice/
Windows XP: C:Documents and Settings<USERNAME>Application DataApple ComputerLogsCrashReporterMobileDevice<DEVICE_NAME>
Windows Vista or 7: C:Users<USERNAME>AppDataRoamingApple ComputerLogsCrashReporterMobileDevice<DEVICE_NAME>
圖11.方法一.手機上的奔潰
圖12.手機鏈接完電腦,通過特定上邊寫的路徑,獲取到的文件們
找到對應的奔潰日志,給我們
如果用戶和你關系很好,要是發送了Crash,你可以要求他發松這個文件給你,然后查找問題
-
2.Xcode獲取
圖13.方法二.Xcode查找奔潰日志
圖14.Xcode看到的日志
-
3.iTunesConnect獲取
圖15.方法三.iTunesConnect查找奔潰日志
但是這個有的時候不好使,不一定及時更新,用戶不開始上報,白扯
圖16.Bug產生的原因
圖17.Crash日志都是16進制保存的,我們要去給他”符號化“
圖18.符號化所需要的東西
圖19.符號化完畢的東西,從后面往前讀
圖20.符號化的圖
圖21.未符號化的Crash日志,主要看看各部分的含義
(1) 進程信息
第一部分是閃退進程的相關信息。
Incident Identifier是崩潰報告的唯一標識符。
CrashReporter Key 是與設備標識相對應的唯一鍵值。雖然它不是真正的設備標識符,但也是一個非常有用的情報:如果你看到100個崩潰日志的CrashReporter Key值都是相同的,或者只有少數幾個不同的CrashReport值,說明這不是一個普遍的問題,只發生在一個或少數幾個設備上。
Hardware Model 標識設備類型。 如果很多崩潰日志都是來自相同的設備類型,說明應用只在某特定類型的設備上有問題。上面的日志里,崩潰日志產生的設備是iPhone 4s。
Process 是應用名稱。中括號里面的數字是閃退時應用的進程ID。
(2) 基本信息
這部分給出了一些基本信息,包括閃退發生的日期和時間,設備的iOS版本。如果有很多崩潰日志都來自iOS 6.0,說明問題只發生在iOS 6.0上。
(3) 異常
在這部分,你可以看到閃退發生時拋出的異常類型。還能看到異常編碼和拋出異常的線程。根據崩潰報告類型的不同,在這部分你還能看到一些另外的信息。
(4) 線程回溯
這部分提供應用中所有線程的回溯日志。 回溯是閃退發生時所有活動幀清單。它包含閃退發生時調用函數的清單。
(5) 線程狀態
這部分是閃退時寄存器中的值。一般不需要這部分的信息,因為回溯部分的信息已經足夠讓你找出問題所在。
(6) 二進制映像
這部分列出了閃退時已經加載的二進制文件。
參考文章:
iOS應用崩潰日志分析