文章目录
dSYM
根据 苹果官方文档,当编译器将源代码
转为机械码
时,会生成调试符号(debug symbols)
,通过这些符号可以将机械码
映射回到源代码
的位置,也就是我们常说的符号化解析
。
这些调试符号存储在二进制文件
中,或者存储在相应的调试符号(dSYM)文件
中。默认情况下,应用程序的调试
构建将调试符号存储在编译后的二进制文件中,而应用程序的发布(Archive)
构建将调试符号存储在相应的dSYM文件
中,以减少二进制文件的大小。
通过Archive
生成的包里面,都会有一个.dSYM
文件
xcode的符号化解析
xcode可以帮我们进行符号化解析
点击Xcode顶部工具栏->Windows->Devices and Simulators->选中设备->View Device Logs
就可以查看设备中崩溃信息,你也可以拖拽未符号化的.crash
文件到左侧栏,xcode
会自动帮你符号化解析.
值得注意的是,文件必须是.crash
后缀才行,你可以将.txt
等类型文件进行重命名后拖入
由于可执行文件区分各个架构,例如arm64,armv7s,i386
,那么每个架构也有对应的.dSYM
。
每个架构的符号
符号
是特定于操作系统版本
和设备的CPU架构
的
例如,同一个包,运行iOS 13.1.0
的iPhone
与运行iOS 13.1.2
的iPhone
的符号不一样。如果您的应用程序运行在支持多种CPU架构(如arm64
和arm64e
)的操作系统版本上,那么具有arm64
架构的设备将只包含操作系统框架的arm64
版本的符号,它不会有arm64e
设备上的操作系统框架的符号
Bitcode相关
Bitcode
是位于代码
和机械码
之间的已编译代码的中间形式。
代码->Bitcode->机械码
这就意味着使用Bitcode
设置的包,会在上传后,由App Store
进行编译,是无法在打包编译时就获取到.dSYM
,你可以在上传后,在Archive
的界面进行下载。见 官方文档
定位你的dSYM
有时候你想知道