首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

Bugly网站中关于dSYM文件脚本自动上传几个注意点记录

2024-12-21 来源:花图问答

什么是符号表?

符号表是内存地址与函数名、文件名、行号的映射表。符号表元素如下所示:

<起始地址> <结束地址> <函数> [<文件名:行号>]

为什么要配置符号表?

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

举一个例子:

简而言之,配置符号表文件就是让网站中显示的出错堆栈从16进制解析为我们可以查看的关于 <起始地址> <结束地址> <函数> [<文件名:行号>] 的信息。

查看shell打印输出

位置为:Report Navigators,快捷键 com + 9, 就是左侧栏中第九项


知道在哪里查看就可以清楚当前run或者archive出来的ipa是否成功上传了dsYM文件

Debug模式

couldn't open file "/Users/tjsoft/Library/Developer/Xcode/DerivedData/..."

Xcode Release编译默认会生成dSYM文件,而Debug编译默认不会生成,对应的Xcode配置如下:

Xcode -> Build Settings -> Apple Clang - Code Generation -> Generate Debug Symbols -> Yes

Xcode -> Build Settings -> Build Option -> Debug Information Format -> DWARF with dSYM File

同时,将shell中的 UPLOAD_DEBUG_SYMBOLS=1 去除注释修改为1


Archive模式

Release模式下默认会生成dSYM文件,在Archive打包过程中,官方给的shell将控制此模式上传的UPLOAD_ARCHIVE_ONLY注释了,默认为所有的都会release模式都会上传,但是大部分情况下,我们需要bugly统计的情况下是Archive打包出来,用来记录崩溃信息的。
所以在集成bugly的时候,在debug模式下无需使用bugly模块服务,在代码中使用宏debug即可

#if !DEBUG
    BuglyConfig * config = [[BuglyConfig alloc] init];
    config.reportLogLevel = BuglyLogLevelWarn;
    [Bugly startWithAppId:appId config:config];
#endif

同时脚本中设置,避免除archive以外的Release模式上传dSYM文件

UPLOAD_ARCHIVE_ONLY=1

脚步自动上传dsYM出现问题

com + 9查看,出现


Showing All Messages
curl: (26) couldn't open file "/Users/tjsoft/Library/Developer/Xcode/DerivedData/XXXXX-haahjjaondjaenfagukjupzqycwk/Build/Intermediates.noindex/ArchiveIntermediates/taiji/BuildProductsPath/BuglySymbolTemp/XXX.app.dSYM.zip"

无法找到压缩的ZIP文件,相对应的文件夹打开压缩文件,说明Shell没有压缩成功。仔细寻找echo信息,可以看到zip erro

zip error: Nothing to do! 
sleep 2s

for dsymFile in $(find "$DSYM_FOLDER" -name '*.dSYM'); do

😅。。。暂时先这样解决

bugly 抽风没有解析的情况下

没错 ,在dsYM确认UUID准确的情况下,就是对于非系统库的文件不解析。。。😭


可以看到除了自己写的文件不解析出来之外,UIKitCore和CoreFoundation等都是可以。
这个时候推荐下大神写到dsYM分析工具
具体源码和介绍都写的很清晰,这里说下 对应bugly中的 需要填写的内存地址和Slide Address
首先,切换为原始不解析模式,两列数据对应两个信息

分析图如下:

2018.10.20

Bugly

这也算一个问题。。。希望有大佬看到可以顺便指导下。。
显示全文