如何在iOS中使用dSYM文件解码崩溃日志?

我的iOS应用程序崩溃了。 我想用dSYM文件读取崩溃日志。 这怎么可能?

首先,您需要三个文件:dSYM文件,应用程序文件和崩溃日志。

打开X代码,在项目导航器中显示Products文件夹,并在“查找器中显示”应用程序文件。 在这里你也可以找到dSYM文件。 将它们复制到一个文件夹。

现在打开终端,然后导航到之前复制的两个文件的文件夹。 运行: dwarfdump --uuid Application_name.app/Application_name您应该收到应用程序的UUID。 运行以下命令: dwarfdump --uuid Application_name.app.dSYM – 您将再次收到UUID,该UUID应与先前收到的UUID匹配。

打开崩溃日志(X代码 – 管理器 – 崩溃),找到出现“二进制图像”标题的行。 这是第一行中的另一个UUID,它应该与先前在终端中接收的UUID再次匹配。

现在,您确信崩溃已记录在您正在检查的构建中,因此再次打开崩溃日志文件,找到Thread 0部分,应该有两行包含您的应用程序名称和两个地址。 如:

 Application_name 0x123456 Application_name 0x987654 

在终端你现在应该运行: atos -arch armv7 -o address1 address2 (地址1和地址2应该用前两个地址替换,armv7用你的系统替换 – 它显示在你有UUID的行上) 。

快乐的调试!

编辑:我想提到这篇post作为我的基础。

实际上,您无法解码dSYM文件,但从中获取错误详细信息1.从日志文件中找到崩溃线程和地址:以下是0x0nnn 2.从日志文件中查找本机代码类型:以下是arm64
3.找到dSYM文件(符号文件),从.xcarchive中提取:以下是xx.app.dSYM

 dwarfdump --lookup 0x0nnn --arch=[arm64 armv6 armv7] xx.app.dSYM