iOS Swift5 收集Crash日志

網(wǎng)上教程不少,坑也不少,經(jīng)過不懈努力,終于讓我把crash日志打印在了手機(jī)屏幕上。

看到這篇文章的朋友,應(yīng)該看了不少其他資料,我先直接說我踩的幾點(diǎn)坑,可能會(huì)直接的幫助到你:

1. ? swift語(yǔ)言的崩潰無法通過NSSetUncaughtExceptionHandler捕獲,因?yàn)镹SSetUncaughtExceptionHandler只捕獲OC代碼的崩潰,例如可以捕獲NSArray數(shù)組越界崩潰,卻無法捕獲Array的數(shù)組越界崩潰

2. ? swift的崩潰是通過signal來接收的,在xcode11,和swift5 的環(huán)境下是可以接收到崩潰信號(hào)的。但是,必須真機(jī)運(yùn)行,而且不能聯(lián)調(diào),這點(diǎn)非常關(guān)鍵,因?yàn)榻?jīng)過測(cè)試發(fā)現(xiàn),崩潰后,聯(lián)調(diào)的斷點(diǎn)永遠(yuǎn)都不會(huì)觸發(fā),因?yàn)槁?lián)調(diào)無法終止程序,signal也不會(huì)發(fā)送,導(dǎo)致carsh日志并沒有被記錄下來。所以,聯(lián)調(diào)安裝后,點(diǎn)擊app運(yùn)行崩潰后,再次打開才可以看到保存起來的崩潰日志(沒保存到本地,將無法看到崩潰日志)

3.線上AppStore記錄的crash日志是經(jīng)過符號(hào)化的,所以需要保存好每個(gè)提交到appStroe的包,重點(diǎn)是里面的dsym文件。


接下來是代碼部分

1.在didFinishLaunchingWithOptions里面調(diào)用此方法

注冊(cè)信號(hào)

2.當(dāng)崩潰的時(shí)候會(huì)調(diào)用signalHandler方法,保存崩潰

保存崩潰

3.在didFinishLaunchingWithOptions的時(shí)候獲取崩潰信息,調(diào)用以下方法,再次打開就可以看到崩潰信息


獲取崩潰日志

只是講解了一些思路,具體還是看別人的demo吧。

下面附上Demo鏈接:

感謝大大的Demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容