JHHK

欢迎来到我的个人网站
行者常至 为者常成

Crash分析(一):dSYM文件

目录

什么是dSYM文件

Xcode编译项目后,我们会看到一个同名的dSYM文件,dSYM是保存16进制函数地址映射信息的中转文件(符号表),我们调试的symbols都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的dSYM文件。

我们可以从两个地方找到dSYM文件:
1、在release环境下,工程编译完成后,在下面目录下可以看到dSYM文件:
/Users/自己的用户名/Library/Developer/Xcode/DerivedData/Build/Products/Release-iphoneos

img

2、上传App Store时我们需要构建版本,该版本的APP会存在本地目录如下:
/Users/自己的用户名/Library/Developer/Xcode/Archives/2018-09-27/自己的appName 2018-9-27, 10.34 PM.xcarchive/dSYMs

img

3、在debug环境下默认是不会产生dSYM文件的,但通过环境配置也可以生成。

XCode -> Build Settings -> Code Generation -> Generate Debug Symbols -> Yes

img

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

img

在debug环境下编译

img

dSYM文件的作用

当我们开发完成将软件安装包提供给测试或上线App Store后,程序的崩溃报错就没法直观的通过xcode来了解。
这个时候我们就需要分析crash report文件了,iOS设备中有日志文件,保存我们每个应用出错的函数内存地址。
这个文件开发者可以通过几种方式拿到:xcode 、第三方工具、用户共享

这个时候我们就可以通过出错的函数地址去查询dSYM文件中程序对应的函数名和文件名。这也是为什么我们很有必要保存每个发布版本的 Archives文件了。

dSYM文件的UUID

每一个dSYM文件都有一个特定的UUID,并且与安装包的UUID对应(所以叫符号表),可以认为特定的安装包有一个唯一与之对应的dSYM文件。

如何获取dSYM文件的UUID?

终端输入指令:xcrun dwarfdump --uuid appName.app.dSYM

img

如何获取app的UUID?

终端输入指令:xcrun dwarfdump --uuid appName.app/appName

img

可以看到dSYM文件的UUID与APP的UUID在不同架构下是一一对应的。


行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.