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

20

我的iOS应用程序崩溃了。我想通过dSYM文件阅读崩溃日志。如何操作?

3个回答

39

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

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

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

打开崩溃日志(X Code - 组织 - 崩溃),找到出现“Binary images”标题的行。在第一行中有另一个UUID,这应该再次与终端中之前收到的UUID匹配。

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

Application_name 0x123456
Application_name 0x987654

现在你应该在终端中运行: atos -arch armv7 -o address1 address2(将address1和address2替换为前面两个地址,将armv7替换为你系统的版本-它在你获取UUID时的那些行上显示)。

祝你调试愉快!

编辑:我想提到这篇文章是我的基础。


1
atos命令在最近的iOS版本中由于ASLR的原因并不总是有效。请查看以下说明以了解应该采取哪些措施:https://dev59.com/amYr5IYBdhLWcg3wkK-w#13576028 - Kerni

5

灵感

https://developer.apple.com/library/archive/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATEWITHXCODE

获取dSYM文件的步骤

  • 将iOS应用程序编译为归档文件
  • 提取MyApp.xcarchive文件
  • 在该文件中,您将找到您的dSYM文件。

获取您设备的崩溃日志

从设备上拉取.crash文件。我通常使用xCode进行此操作。

逐行方法

atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc

0x1000e4000 = address of your app's image
0x00000001000effdc = is the stripped name of the symbol you want to turn into a readable name

专业方法

获取 symbolicatecrash 可执行文件的位置。

在 Xcode 9 中,您需要找到以下文件:

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

打印符号化的崩溃日志到终端

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

./symbolicatecrash -v crash_log_20_9_2018.crash myapp.app.dSYM

阅读

这里有关于atos的良好说明: 如何在Xcode中符号化崩溃日志?

在没有dsym文件的情况下执行相同操作的方法在这里: https://medium.com/@Mrugraj/crash-re-symbolication-5c28d3a3a883


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接