返回

iOS Crash 文件获取与符号化解析指南

Android

iOS Crash 文件获取与符号化解析

什么是 iOS Crash 文件?

当 iOS 应用在运行期间遇到崩溃时,系统会生成一个 Crash 文件。该文件包含有关崩溃的详细信息,例如崩溃发生的时间、位置以及导致崩溃的代码。

如何获取 iOS Crash 文件

iOS Crash 文件通常存储在设备的以下目录中:

/var/mobile/Library/Logs/CrashReporter/

可以使用以下命令获取设备上的所有 Crash 文件:

find /var/mobile/Library/Logs/CrashReporter/ -name "*.crash"

什么是符号化解析?

符号化解析是一种将 Crash 文件中的二进制代码转换为可读符号信息的过程。符号化解析使我们能够更轻松地理解 Crash 文件并找到导致崩溃的代码行。

如何符号化解析 iOS Crash 文件

我们可以使用 Apple 提供的 atos 工具进行符号化解析。atos 工具位于 /usr/bin/atos

符号化解析 Crash 文件的命令如下:

atos -arch arm64 -o <app_executable_path> -l <address>

其中:

  • -arch arm64:指定 Crash 文件的架构。
  • -o <app_executable_path>:指定 App 可执行文件的路径。
  • -l <address>:指定要解析的地址。

代码示例

以下命令符号化解析 /var/mobile/Library/Logs/CrashReporter/com.example.app.crash 文件:

atos -arch arm64 -o /Applications/com.example.app.app/com.example.app -l 0x100000

解析后的结果如下:

0x100000: main (main.m:16)

这表示崩溃发生在 main.m 文件的第 16 行。

常见问题解答

1. 为什么我的 Crash 文件无法符号化解析?

这可能是因为您没有安装 App 的符号文件。符号文件是 App 在编译时生成的,用于符号化解析。您可以从 App Store Connect 下载 App 的符号文件。

2. 如何查看 Crash 文件中的堆栈信息?

可以使用 atos -trace 命令查看 Crash 文件中的堆栈信息。

atos -arch arm64 -o /Applications/com.example.app.app/com.example.app -trace <address>

例如,以下命令查看 /var/mobile/Library/Logs/CrashReporter/com.example.app.crash 文件中的堆栈信息:

atos -arch arm64 -o /Applications/com.example.app.app/com.example.app -trace 0x100000

3. 如何获取 App 的符号文件?

可以通过以下步骤从 App Store Connect 下载 App 的符号文件:

  • 登录 App Store Connect。
  • 选择您的 App。
  • 在左侧菜单中,点击“符号文件”。
  • 点击“下载”。

4. 如何安装符号文件?

将符号文件安装到 Xcode 的以下目录中:

~/Library/Developer/Xcode/iOS DeviceSupport/<device_udid>/Symbols/

其中 <device_udid> 是设备的唯一标识符。

5. 如何检查符号文件是否已安装?

在 Xcode 中,打开“设备和模拟器”窗口。选择您的设备并点击“符号文件”。如果符号文件已安装,您应该会看到 App 的名称和版本。

结论

iOS Crash 文件获取和符号化解析对于快速定位和解决 App 崩溃至关重要。通过掌握这些技能,您可以提升 App 的稳定性和用户体验。