Bugly 上传 符号表(iOS)

介绍

什么是符号表?

符号表是内存地址与函数名、文件名、行号的映射表。符号表元素如下所示:
<起始地址> <结束地址> <函数> [<文件名:行号>]

为什么要配置符号表?

为了能快速并准确地定位用户APP发生Crash的代码位置,Bugly使用符号表对APP发生Crash的程序堆栈进行解析和还原。
举一个例子:


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

Bugly提供了自动和手动两种方法配置iOS符号表。

自动配置:XCode + sh脚本

自动配置请首先下载和解压自动配置符号表工具包,然后选择上传方式并配置Xcode的编译执行脚本。

上传方式

使用脚本自动配置支持两种上传方式(建议用方式二):

  • 方式一:直接上传dSYM文件(默认方式 )
  • 方式二:提取dSYM文件的符号表文件并上传

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

  • 下载符号表提取工具依赖的Java运行环境(JRE或JDK版本需要>=1.6)

  • 把工具包buglySymbolIOS.jar保存在用户主目录(Home)的bin目录下(没有bin文件夹,请自行创建):

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

配置Xcode编译执行脚本

  • 在Xcode工程对应Target的Build Phases中新增Run Scrpit Phase


    截屏2022-02-09 下午5.08.13.png
  • 打开工具包中的dSYM_upload.sh,复制所有内容,在新增的Run Scrpit Phase中粘贴
  • 修改新增的Run Scrpit中的 为您的App ID,为您的App Key, 为App的Bundle Id


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

脚本默认在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
截屏2022-02-09 下午5.22.10.png
  • 获取dSYM文件UUID
xcrun dwarfdump --uuid 

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  -version  -platform <平台类型分别是 Android、IOS,注意大小写要正确> -inputSymbol 

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、上传后平台显示


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

至此 符号表已经成功手动上传完成 。


文章持续更新中、希望对各位有所帮助、有问题可留言 大家共同学习.

你可能感兴趣的:(Bugly 上传 符号表(iOS))