跳转到主要内容
PRODUCT DOCUMENTS

快速找到所需文档,高效完成接入与排障

浏览产品文档与友盟 Skill,展开目录并阅读正文。

iOS符号表使用手册

什么是符号表

iOS构建时产生的符号表,它是内存地址与函数名,文件名,行号的映射表。 符号表元素如下所示:

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

为什么需要使用符号表

类似于android构建release包时的mapping文件,我们利用mapping文件可以将混淆后的APP运行时的现成堆栈信息还原成混淆前的堆栈信息(利用retrace 工具)。所以当应用crash时,我们可以利用crash时的堆栈信息得到对应到源代码的堆栈信息,还能看到出错的代码在多少行,所以能快速定位出错的代码位置,以便快速解决问题。

而iOS应用crash时也有堆栈,release版的应用,crash时的堆栈信息,全是二进制的地址信息。

还原前堆栈

image.png

还原后堆栈

image.png

dSYM符号表

建议每次发布APP版本的时候,备份App对应的dSYM文件!

什么是dSYM文件

iOS平台中,dSYM文件是保存符号表的目标文件,文件名通常为:xxx.app.dSYM。如下图所示:

image.png

如何生成dSYM文件

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

XCode -> Build Settings -> Code Generation -> Generate Debug Symbols -> Yes
XCode -> Build Settings -> Build Option -> Debug Information Format -> DWARF with dSYM File

如下图所示:

image.png

Bitcode下发布的App的dSYM的配置

在点“Upload to App Store”上传到App Store服务器的时候需要声明符号文件(dSYM文件)的生成:

image.png

生成的dSYM文件需要注意的问题

1.每次程序重新编译,都会生成新的xxx.app.dSYM(无论代码是否修改或者配置项是否修改,生成的UUID都会不同)。 2.如果app开启了Bitcode,需要发布AppStore,需要从网上下载AppStore生成的xxx.app.dSYM,而不是本地xxx.app.dSYM。(因为AppSotre会重新根据BitCode,重新编译app并生成真正的xxx.app.dSYM)

如何找到生成的dSYM文件

本地生成的App获取dSYM文件

用于本地测试或者内测版本的dSYM。 如下图所示:

image.png

image.png

未开启Bitcode获取本地dSYM文件

1.打开 Xcode,选择"Window——>Organizer"

image.png

2.择对应版本的 Archive 包,"右键——>Show in Finder"

image.png

3.选择 Archives/'date'/ 文件夹下的".xcarchive"文件,"右键——>显示包内容"

image.png

4.找到dSYMs文件夹下的dSYM文件

image.png

开启Bitcode获取发布App的dSYM文件

1.进入 itunesconnect -> 我的APP

2.选择活动Tab

image.png

3.选择需要的dSYM版本

image.png

如何查看dSYM文件的UUID?

xcrun dwarfdump --uuid <dSYM文件>