Bugly 上傳 符號(hào)表(iOS)

介紹

什么是符號(hào)表?

符號(hào)表是內(nèi)存地址與函數(shù)名、文件名、行號(hào)的映射表。符號(hào)表元素如下所示:
<起始地址> <結(jié)束地址> <函數(shù)> [<文件名:行號(hào)>]

為什么要配置符號(hào)表?

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


截屏2022-02-09 下午5.01.55.png

Bugly提供了自動(dòng)和手動(dòng)兩種方法配置iOS符號(hào)表。

自動(dòng)配置:XCode + sh腳本

自動(dòng)配置請(qǐng)首先下載和解壓自動(dòng)配置符號(hào)表工具包,然后選擇上傳方式并配置Xcode的編譯執(zhí)行腳本。

上傳方式

使用腳本自動(dòng)配置支持兩種上傳方式(建議用方式二):

  • 方式一:直接上傳dSYM文件(默認(rèn)方式 )
  • 方式二:提取dSYM文件的符號(hào)表文件并上傳

其中,使用方式二需要額外操作以下幾步:

  • 下載符號(hào)表提取工具依賴的Java運(yùn)行環(huán)境(JRE或JDK版本需要>=1.6)

  • 把工具包buglySymbolIOS.jar保存在用戶主目錄(Home)的bin目錄下(沒有bin文件夾,請(qǐng)自行創(chuàng)建):

    截屏2022-02-09 下午5.06.43.png

配置Xcode編譯執(zhí)行腳本

  • 在Xcode工程對(duì)應(yīng)Target的Build Phases中新增Run Scrpit Phase


    截屏2022-02-09 下午5.08.13.png
  • 打開工具包中的dSYM_upload.sh,復(fù)制所有內(nèi)容,在新增的Run Scrpit Phase中粘貼
  • 修改新增的Run Scrpit中的 <YOUR_APP_ID> 為您的App ID,<YOUR_APP_KEY>為您的App Key,<YOUR_BUNDLE_ID> 為App的Bundle Id


    截屏2022-02-09 下午5.08.13.png

腳本默認(rèn)在Debug模式及模擬器編譯情況下不會(huì)上傳符號(hào)表,在需要上傳的時(shí)候,請(qǐng)修改下列選項(xiàng)

  • Debug模式編譯是否上傳,1=上傳 0=不上傳,默認(rèn)不上傳
  • UPLOAD_DEBUG_SYMBOLS=0
  • 模擬器編譯是否上傳,1=上傳 0=不上傳,默認(rèn)不上傳
  • UPLOAD_SIMULATOR_SYMBOLS=0

至此,自動(dòng)上傳符號(hào)表腳本配置完畢,Bugly 會(huì)在每次 Xcode 工程編譯后自動(dòng)完成符號(hào)表配置工作。

手動(dòng)配置

1、下載最新版Bugly iOS符號(hào)表工具,其中工具包中包括:

  • 符號(hào)表工具JAR包(buglySymboliOS.jar)
  • Shell腳本(buglySymboliOS.sh)
  • 符號(hào)表上車工具JAR包(buglyqq-upload-symbol.jar)

2、根據(jù)Crash的UUID定位要上傳的dSYM文件

  • 獲取Crash的UUID
截屏2022-02-09 下午5.22.10.png
  • 獲取dSYM文件UUID
xcrun dwarfdump --uuid <dSYM文件>

3、終端進(jìn)入buglyqq-upload-symbol.jar所在的文件夾

bogon:~ zhanghua$ cd /Users/zhanghua/Desktop/buglyqq-upload-symbol 
bogon:buglyqq-upload-symbol zhanghua$ 

4、執(zhí)行命令

  java -jar buglyqq-upload-symbol.jar -appid <產(chǎn)品對(duì)應(yīng)的appid> -appkey <產(chǎn)品對(duì)應(yīng)的appkey> -bundleid <bundle id> -version <App版本號(hào)> -platform <平臺(tái)類型分別是 Android、IOS,注意大小寫要正確> -inputSymbol <dSYM文件路徑>

5、結(jié)果

bogon:buglyqq-upload-symbol zhanghua$ java -jar buglyqq-upload-symbol.jar -appid 5564d03239 -appkey 35306e6d-eb19-4278-9de6-268556c569a4 -bundleid com.tiens.chinads.QingYang -version 2.0 -platform IOS -inputSymbol /Users/zhanghua/Library/Developer/Xcode/DerivedData/QingYang-gzepnblsfimroldverozjgbepktt/Build/Products/Debug-iphonesimulator/QingYang.app.dSYM
##[info]clear cache buglyQqUploadSymbolLib
##[info]clear cache symbolToolAndroid
##[info]bugly tools android params: -appid 5564d03239 -appkey 35306e6d-eb19-4278-9de6-268556c569a4 -bundleid     com.tiens.chinads.QingYang -version 2.0 -platform IOS -inputSymbol /Users/zhanghua/Library/Developer/Xcode/DerivedData/QingYang-    gzepnblsfimroldverozjgbepktt/Build/Products/Debug-iphonesimulator/QingYang.app.dSYM

Bugly(bugly.qq.com)符號(hào)表工具上傳工具包 V1.0.48
......................    省略部分
......................    省略部分
......................    省略部分
......................    省略部分
##[info]envtype is null
##[info]getAppModuleList is null
##[info]retCode: 200 response message: {"statusCode":0,"msg":"success","uploadReqID":"5564d03239-7e6674b7-2fac-4977-8c88-    e2a791dd17c1"}
##[info]now begin to uploadFileContent
##[info]request uploadFileurl is https://symbol-v2.bugly.qq.com/trpc.eff_tool.symbol_upload_gateway.SymbolUploadGateway/uploadFile
##[info]retCode: 200 response message: {"statusCode":0,"msg":"success","uploadReqID":"5564d03239-7e6674b7-2fac-4977-8c88-e2a791dd17c1"}
bogon:buglyqq-upload-symbol zhanghua$ 

6、上傳后平臺(tái)顯示


截屏2022-02-09 下午7.19.18.png

至此 符號(hào)表已經(jīng)成功手動(dòng)上傳完成 。


文章持續(xù)更新中、希望對(duì)各位有所幫助、有問題可留言 大家共同學(xué)習(xí).

?著作權(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ù)。

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

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