介紹
什么是符號(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è)例子:

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

- 獲取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)顯示

至此 符號(hào)表已經(jīng)成功手動(dòng)上傳完成 。
文章持續(xù)更新中、希望對(duì)各位有所幫助、有問題可留言 大家共同學(xué)習(xí).


