前言
每當(dāng)App發(fā)生崩潰的時候, 都會生成一份崩潰日志并存儲在設(shè)備上。這個崩潰日志會記錄下當(dāng)前進(jìn)程中的所有執(zhí)行線程的堆棧, 以及崩潰原因描述, 以便于我們快速定位到發(fā)生崩潰的原因扣草。
獲取崩潰日志的方法很多, 主要得結(jié)合當(dāng)下狀況來看哪個方便點(diǎn)剔宪。
- 獲取崩潰日志的方法
一框产、從Xcode獲取
Xcode登錄開發(fā)者賬號后, 打開Xcode->Window->Organizer, 打開如圖界面
[圖片上傳中...(00293dkxzy7xBVX3jom6a.jpeg-dfc789-1585719356323-0)]
這種方式很官方, 嗯脚乡。官方提供的線上包崩潰日志的查看方法, 但是存在72小時的延遲可能, 并且需要用戶配合開啟"與應(yīng)用開發(fā)者共享"才能獲取得到眨猎。
用戶開啟"與應(yīng)用程序開發(fā)者共享"方法如下:
打開"設(shè)置"->隱私->診斷與用量(以iOS8.x為例)
- 勾選"自動發(fā)送"開關(guān);
- 開啟"與應(yīng)用程序開發(fā)者共享"開關(guān);
這個開關(guān)默認(rèn)是關(guān)閉的, 所以通過這種很官方的途徑一般很難拿到針對某個崩潰的日志贡这。所幸的是, iOS13上針對應(yīng)用崩潰, (終于)能像安卓那樣彈個崩潰彈窗, 來提醒用戶打開并反饋崩潰秃症。
二记劝、從設(shè)備控制臺獲取
-
打開Xcode, 點(diǎn)擊Window->Device(快捷鍵: cmd+shift+2), 然后點(diǎn)擊如下圖按鈕"View Device Logs":
00293dkxzy7xBBKbxgB31.jpeg
這種方法適合開發(fā)者能把崩潰設(shè)備拿到手的情況, 又或者能根據(jù)用戶反饋復(fù)現(xiàn)的情況变姨。通過這種方法來獲取到的崩潰日志, 系統(tǒng)方法還會自動給你"符號化"出來。
三厌丑、從手機(jī)上獲取
打開"設(shè)置"->隱私->診斷與用量->診斷與用量數(shù)據(jù);
這種方法最粗暴簡單, 適合所有用戶操作定欧。根據(jù)"進(jìn)程名+時間"的命名格式尋找到崩潰日志, 然后通過"分享"功能導(dǎo)出即可。但在iOS9及以下系統(tǒng)中卻沒有分享按鈕, 只能通過拷貝到別的文本里再分享來解決...
四怒竿、從第三方助手軟件獲取
如果是越獄手機(jī)的話, 通過使用助手軟件可以直接從手機(jī)里的以下路徑中找出來
控制臺上打印的日志存放路徑
這里以同步助手作為樣例:
- 進(jìn)入以下路徑:(iOS8.x系統(tǒng))
- iPhone上的文件>var>mobile>Library>Logs>CrashReporter
- 按照"進(jìn)程名+日期"把崩潰日志(.ips/.beta/*.synced)篩選出來, 右鍵->導(dǎo)出;
- 添加后綴.crash即可;
此方法目前在iOS 8.x砍鸠、9.x完美越獄設(shè)備上有效, 而iOS10.x非完美越獄設(shè)備&非越獄則無法獲取(因?yàn)楦夸浵逻€未出現(xiàn)var這個文件夾)
- 添加后綴.crash即可;
五、集成友盟耕驰、bugly等收集崩潰信息的第三方庫
這些第三方庫主要都是通過重寫UncaughtExceptionHandler()方法來收集崩潰信息, 網(wǎng)上太多這方面的文章, 這里就簡單帶過了爷辱。
結(jié)語
其實(shí)還有一些方法比如: 舊版iTunes Connect->App分析、iTunes同步備份設(shè)備等等一些過期方法, 這里就不再展開說了朦肘。?如果上面還有沒寫到的方法, 歡迎大蝦指出~
附:[iOS]App崩潰解析(三):匹配.crash和.dSYM