一:介紹
1、什么是符號表?
符號表是內(nèi)存地址與函數(shù)名、文件名、行號的映射表。
符號表元素如下所示:
<起始地址> <結(jié)束地址> <函數(shù)> [<文件名:行號>]
2、為什么要配置符號表?
為了能快速并準確地定位用戶APP發(fā)生Crash的代碼位置,Bugly使用符號表對APP發(fā)生Crash的程序堆棧進行解析和還原。
舉一個例子:
Bugly提供了自動和手動兩種方法配置iOS符號表。
二、自動配置:XCode + sh腳本(推薦)
1、自動配置請首先下載和解壓自動配置符號表工具包,然后選擇上傳方式并配置Xcode的編譯執(zhí)行腳本。

2、直接上傳dSYM文件(默認方式 )
配置Xcode編譯執(zhí)行腳本
-
在Xcode工程對應Target的Build Phases中新增Run Scrpit Phase
4003.jpg

打開工具包中的dSYM_upload.sh,復制所有內(nèi)容,在新增的Run Scrpit Phase中粘貼
修改新增的Run Scrpit中的 內(nèi)容:
<YOUR_APP_ID> 為您的App ID
<YOUR_APP_KEY>為您的App Key
<YOUR_BUNDLE_ID> 為App的Bundle Id

注意事項:
腳本默認在Debug模式及模擬器編譯情況下不會上傳符號表,在需要上傳的時候,請修改下列選項
- Debug模式編譯是否上傳,1=上傳 0=不上傳,默認不上傳
UPLOAD_DEBUG_SYMBOLS=0 - 模擬器編譯是否上傳,1=上傳 0=不上傳,默認不上傳
UPLOAD_SIMULATOR_SYMBOLS=0
至此,自動上傳符號表腳本配置完畢,Bugly 會在每次 Xcode 工程編譯后自動完成符號表配置工作。
三、手動配置
手動配置的流程如下:
-
下載最新版Bugly iOS符號表工具,其中工具包中包括:
- 符號表工具JAR包(buglySymboliOS.jar)
- Windows的腳本(buglySymboliOS.bat)
- Shell腳本(buglySymboliOS.sh)
- 默認符號表配置文件(settings.txt)
-
符號表工具iOS版-使用指南
4009.png
根據(jù)Crash的UUID定位dSYM文件
使用工具生成符號表文件(zip文件)
在頁面上傳符號表文件
注意事項:
環(huán)境要求 : 符號表工具的運行需要Java運行環(huán)境
示例操作:
1、將Xcode生成的dSYM文件拷貝至桌面
2、生成符號表文件
使用符號表工具的JAR包生成符號表文件的命令如下:
cd /Users/liuyi/Downloads/buglySymboliOS2.4.3\ \(1\)
java -jar buglySymboliOS.jar -i /Users/liuyi/Desktop/HDGansuKJG.app.dSYM
生成的符號表文位于: /Users/liuyi/Desktop/
3、上傳 buglySymbol_HDGansuKJG_arm64-f1abe.zip 文件

四、dSYM文件
什么是dSYM文件?
iOS平臺中,dSYM文件是指具有調(diào)試信息的目標文件,文件名通常為:xxx.app.dSYM。如下圖所示:
為了方便找回Crash對應的dSYM文件和還原堆棧,建議每次構(gòu)建或者發(fā)布APP版本的時候,備份好dSYM文件。
如何定位dSYM文件?
一般情況下,項目編譯完dSYM文件跟app文件在同一個目錄下,下面以XCode作為IDE詳細說明定位dSYM文件。
-> 進入XCode;
-> 打開工程(已編譯過);
-> 在左欄找到“Product”項;
-> 鼠標右鍵點擊編譯生成的“xxx.app”;
-> 點擊“Show in Finder”;
如下圖所示:

XCode編譯后沒有生成dSYM文件?
XCode Release編譯默認會生成dSYM文件,而Debug編譯默認不會生成,對應的Xcode配置如下:
XCode -> TARGETS -> Build Settings -> Code Generation -> Generate Debug Symbols -> Yes
XCode -> TARGETS -> Build Settings -> Build Option -> Debug Information Format -> DWARF with dSYM File


