介绍
什么是符号表?
符号表是内存地址与函数名、文件名、行号的映射表。符号表元素如下所示:
<起始地址> <结束地址> <函数> [<文件名:行号>]
为什么要配置符号表?
为了能快速并准确地定位用户APP发生Crash的代码位置,Bugly使用符号表对APP发生Crash的程序堆栈进行解析和还原。
举一个例子:
Bugly提供了自动和手动两种方法配置iOS符号表。
自动配置:XCode + sh脚本
自动配置请首先下载和解压自动配置符号表工具包,然后选择上传方式并配置Xcode的编译执行脚本。
上传方式
使用脚本自动配置支持两种上传方式(建议用方式二):
- 方式一:直接上传dSYM文件(默认方式 )
- 方式二:提取dSYM文件的符号表文件并上传
其中,使用方式二需要额外操作以下几步:
下载符号表提取工具依赖的Java运行环境(JRE或JDK版本需要>=1.6)
-
把工具包
buglySymbolIOS.jar
保存在用户主目录(Home)的bin
目录下(没有bin
文件夹,请自行创建):
配置Xcode编译执行脚本
-
在Xcode工程对应Target的Build Phases中新增Run Scrpit Phase
- 打开工具包中的dSYM_upload.sh,复制所有内容,在新增的Run Scrpit Phase中粘贴
-
修改新增的Run Scrpit中的 <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 工程编译后自动完成符号表配置工作。
手动配置
1、下载最新版Bugly iOS符号表工具,其中工具包中包括:
- 符号表工具JAR包(buglySymboliOS.jar)
- Shell脚本(buglySymboliOS.sh)
- 符号表上车工具JAR包(buglyqq-upload-symbol.jar)
2、根据Crash的UUID定位要上传的dSYM文件
- 获取Crash的UUID
- 获取dSYM文件UUID
xcrun dwarfdump --uuid <dSYM文件>
3、终端进入buglyqq-upload-symbol.jar所在的文件夹
bogon:~ zhanghua$ cd /Users/zhanghua/Desktop/buglyqq-upload-symbol
bogon:buglyqq-upload-symbol zhanghua$
4、执行命令
java -jar buglyqq-upload-symbol.jar -appid <产品对应的appid> -appkey <产品对应的appkey> -bundleid <bundle id> -version <App版本号> -platform <平台类型分别是 Android、IOS,注意大小写要正确> -inputSymbol <dSYM文件路径>
5、结果
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)符号表工具上传工具包 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、上传后平台显示
至此 符号表已经成功手动上传完成 。
文章持续更新中、希望对各位有所帮助、有问题可留言 大家共同学习.