Bugly符號化iOS 崩潰,快速定位crash

【原創(chuàng)博文,轉(zhuǎn)載請注明出處!】

當(dāng)前iOS游戲App捕獲crash接入的SDK是騰訊的bugly ,攔截到崩潰信息之后,往往對那些程序最后時刻的堆棧地址無從下手,想必小伙伴們都看到過類似的玩意兒吧??:
崩潰信息.png
一堆地址,怎么知道這個crash的具體信息呢?今天我們借助bugly上傳符號表就可以將這些地址映射成具體的類名。
Bugly iOS 符號表配置官方文檔入口:https://bugly.qq.com/docs/user-guide/symbol-configuration-ios/?v=1492997248592

什么是符號表?

符號表是內(nèi)存地址與函數(shù)名、文件名、行號的映射表。符號表元素如下所示:

<起始地址> <結(jié)束地址> <函數(shù)> [<文件名:行號>]

為什么要配置符號表?

為了能快速并準(zhǔn)確地定位用戶APP發(fā)生Crash的代碼位置,Bugly使用符號表對APP發(fā)生Crash的程序堆棧進(jìn)行解析和還原。

舉一個例子,用對比說話:

example.jpg

通過上面的簡單說明,我們大致了解到配置iOS符號表可以幫我們高效、準(zhǔn)確地定位到引起iOS應(yīng)用crash的函數(shù)堆棧所對應(yīng)的類名,便于快速地解決問題。但是官方文檔提供了幾種不同的配置方案,看似很友好,但是不同的方案之間操作并沒有講清楚,很迷惑,照做下去可能踩坑且沒有效果。

本人按照官方教程試了幾種方法,強(qiáng)烈不推薦大家使用“配置Xcode編譯執(zhí)行腳本”方案,這樣每次編譯項目都會運(yùn)行腳本,速度賊慢。下面將是我推薦的方案(反正你跟著我做就可以了)。

首先給Mac安裝Java運(yùn)行環(huán)境--->http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Java.png

打開鏈接,選擇上圖中紅色圈出部分,下載Mac下的.dmg文件即可。下載完成之后雙擊便可一鍵式安裝完畢。嗯,蘋果安裝軟件就是這么滴簡單。

###Question:如何驗證Java環(huán)境成功安裝?
Steps: 
① .打開終端。
② .輸入  java  -version
③.如果成功了就沒有這步了。如果沒成功,那說明前面下載的Java運(yùn)行環(huán)境有誤。
安裝成功了,終端會如下顯示--->
java_installed.png

嗯,上面我們將電腦Java環(huán)境配置好了,下面還需要4個步驟才能結(jié)束今天的分享。

1.下載Bugly iOS符號表工具;
2.找到Bugly中對應(yīng)UUID的編譯后的包的dSYM文件;
3.使用下載下來的工具生成符號表文件(.zip格式包);
4.在bugly后臺上傳符號表文件(.zip格式包)。

一步步行動起來吧。

解決第①步:下載Bugly iOS符號表工具吧-->Bugly iOS符號表工具。

解決第②步:show in finder->顯示包內(nèi)容->dSYMs文件夾->找到和項目同名的.dSYM文件,即(項目名.app.dSYM)

找到xcode打包文件,顯示包內(nèi)容.jpg

找到與項目同名的.app.dSYM文件.jpg
Tips:可以在桌面新建一個文件夾,將找到的這個xx.app.dSYM文件還有第一步下載的符號表工具包中“buglySymboliOS.jar”文件放到新建的文件夾中,方便后續(xù)通過終端生成符號表.zip文件。

解決第③步:

Rephontil:~ zhouyong$ java -jar /Users/zhouyong/Desktop/Demo/iOS_Bugly研究/target/buglySymboliOS.jar -i /Users/zhouyong/Desktop/Demo/iOS_Bugly研究/HelloCpp-mobile.app.dSYM 

簡單說明:上面是我使用終端生成自己項目的符號表.zip文件。

完整命令是java -jar 第一步下載的符號表工具包中“buglySymboliOS.jar”文件的路徑 -i你就是 第二步獲取到的xx.app.dSYM文件路徑。(Mac環(huán)境下直接將對應(yīng)的文件拖入到終端即可生成路徑,非常簡單),這樣就可以生成我們需要的目標(biāo)符號表.zip文件了。終端運(yùn)行成功后的界面如下:
終端成功生成.zip符號表文件.png

不指定生成的符號表.zip文件路徑時,默認(rèn)生成的文件與我們剛剛指定的xx.app.dSYM文件同一位置,如下所示:
生成的符號表.zip文件.png

解決第④步:在bugly后臺上傳符號表文件(.zip格式包)
bugly符號表管理.png

bugly符號表上傳.png
upload successful.png

上傳成功后直接點擊上面“確定”就可以了。后臺解析成功后會自動顯示的(不放心的話過段時間你再看,如果不是這樣算我輸)

最后我們通過兩張圖來對比著看一下今天的勞動成果:

A:符號化之前函數(shù)調(diào)用棧地址
符號化之前函數(shù)調(diào)用棧地址.png

B:符號化之后內(nèi)存地址映射成對應(yīng)類名
符號化之后內(nèi)存地址轉(zhuǎn)換為對應(yīng)的類名.png

上面的例子是在iOS平臺C++環(huán)境下開發(fā)游戲所發(fā)生的崩潰,C++層面的崩潰比iOS原生類的崩潰惡心很多,且Xcode對C++的崩潰給出的有用信息很少,借助bugly符號化對提高應(yīng)用的穩(wěn)定性很有幫助,相信如果是原生iOS開發(fā),對于定位Objective-C或swift應(yīng)該更友好!


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

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是符號表? 符號表是內(nèi)存地址與函數(shù)名、文件名、行號的映射表。符號表元素如下所示: <起始地址> <結(jié)束地址> ...
    深圳陽光閱讀 12,450評論 28 5
  • iOS Crash 流程化:一般的 Crash 日志解析方法TL;DR一、手動解析 Crash 日志1、需要的相關(guān)...
    Vinc閱讀 5,894評論 0 7
  • 最近在做 Crash 分析方面的工作,發(fā)現(xiàn) iOS 的崩潰捕獲和堆棧符號化雖然已經(jīng)有很多資料可以參考,但是沒有比較...
    Joy___閱讀 15,600評論 15 143
  • 這篇文章,我不說最基本的怎么看crash的棧,怎么定位crash的thread,希望看這篇文章的童鞋都有這個基礎(chǔ)。...
    小如99閱讀 1,868評論 0 0
  • 反思日志0717周一 晴 5:00起床 23:00睡覺 運(yùn)動:(重點關(guān)注右側(cè)大腿,髂腰肌及骶髂關(guān)節(jié)的拉伸放松,最終...
    娟妹紙李娟閱讀 278評論 0 0

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