iOS开发-使用dSYM文件符号化Crash日志

3,973 阅读1分钟

1、获取crash日志

通过Xcode获取到崩溃日志,方法是Xcode->Window->Devices View Device Logs 可以将日志导出到电脑上

2、获取dSYM文件

Xcode编译项目后,会生成一个同名的 dSYM 文件。 dSYM 是保存 16 进制函数地址映射信息的文件,每次编译项目的时候都会生成一个新的 dSYM 文件。 iOS 设备中会有日志文件保存每个应用出错的函数内存地址,通过 Xcode 的 Organizer 可以将 iOS 设备中的 DeviceLog 导出成 crash 文件,可以通过出错的函数地址去查询 dSYM 文件中程序对应的函数名和文件名。

3、符号化

通过Mac自带的命令行工具解析Crash文件需要具备三个文件

  • 1.symbolicatecrash,Xcode自带的崩溃分析工具 使用这个工具可以更精确的定位崩溃所在的位置,将0x开头的地址替换为响应的代码和具体行数。

获取symbolicatecrash工具

打开终端输入以下命令:

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

//路径是:

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

根据路径前往文件夹找到symbolicatecrash ,将其复制到刚才指定文件夹

  • 2.打包时产生的dSYM文件。

  • 3.崩溃时产生的Crash文件,XXX.crash。

  • 准备工作完成,开始符号化操作

打开终端,cd到当前文件夹,输入命令

./symbolicatecrash XX.crash XX.app.dSYM > result.crash

如果报错

 Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash 

需要 执行命令

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

然后重新 输入命令

./symbolicatecrash XX.crash XX.app.dSYM > result.crash

这样就看到一个名字result.crash 已经符号化的文件了.