iOS 使用DYSM分析Crash日志

项目被拒,很悲催,给的日志全是内存地址,看不懂有木有。那么,如何使用DYSM分析Crash日志获取崩溃信息呢。

先说说DYSM,使用Xcode每次Archive一个包之后,都会随之生成一个dSYM文件。dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的 dSYM 文件,这个文件和.app对应,每次打包都会变。每个DYSM文件的UUID和app对应。

1.下载崩溃日志,将.Crash、.dSYM、.app 三个文件都放在我们在桌面建立的Crash文件夹中。

2.DYSM文件获取

3.检查DYSM,app和 Crash文件的对应关系

a.查看 xx.app 文件的 UUID,terminal 中输入命令 :

dwarfdump --uuid xx.app/xx (xx代表你的项目名)

b.查看 xx.app.dSYM 文件的 UUID ,在 terminal 中输入命令:

dwarfdump --uuid xx.app.dSYM 

c.crash 文件内第一行 Incident Identifier 就是该 crash 文件的 UUID。 3.找到symbolicatecrash工具存放的地址

find /Applications/Xcode.app -name symbolicatecrash -type f

会看到:

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

4.将symbolicatecrash工具复制出来

cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash ./

5.转换Log appName为对应文件名

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash appName.crash appName.app > appName.log

注:如果命令行下执行 symbolicatecrash 出现 Error:”DEVELOPER_DIR”isnotdefined at /Applications/Xcode.app/[snip]Resources/symbolicatecrash line 53 提示 在命令下执行

export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"