腾讯bugly可以帮助我们快速定位线上bugly,在操作的过程中难度最大的就是符号表的配置.
一、什么是符号表?
符号表是内存地址与函数名、文件名、行号的映射表。符号表元素如下所示:
<起始地址> <结束地址> <函数> [<文件名:行号>]
二、为什么要配置符号表?
为了能快速并准确地定位用户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中的
为您的App ID, 为您的App Key, 为App的Bundle Id
脚本默认在Debug模式及模拟器编译情况下不会上传符号表,在需要上传的时候,请修改下列选项
- Debug模式编译是否上传,1=上传 0=不上传,默认不上传
- UPLOAD_DEBUG_SYMBOLS=0
- 模拟器编译是否上传,1=上传 0=不上传,默认不上传
- UPLOAD_SIMULATOR_SYMBOLS=0
至此,自动上传符号表脚本配置完毕,Bugly 会在每次 Xcode 工程编译后自动完成符号表配置工作。
四、手动配置
下载最新版Bugly iOS符号表工具,其中工具包中包括:
- 符号表工具JAR包(buglySymboliOS.jar)
- Shell脚本(buglySymboliOS.sh)
- 符号表上车工具JAR包(buglyqq-upload-symbol.jar)
根据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$
查看指定模块加载地址
xcrun atos -o Spark.app.dSYM/Contents/Resources/DWARF/Spark -l 0x0000000102b78000 0x0000000102bea678
6、上传后平台显示
- 本文作者: Grx
- 本文链接: https://ruixiaoguo.github.io/Grx.github.io/Grx.github.io/2022/10/02/Bugly上传符号表/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!