概述
当 Xcode 将你的源代码编译成机器码时,它会在你的应用程序中生成一个符号列表——类名、全局变量以及方法和函数名。这些符号对应于定义它们的文件和行号;这个关联创建了一个调试符号,所以你可以在 Xcode 中使用调试器,或者参考崩溃报告报告的行号。默认情况下,应用程序的调试版本将调试符号放置在已编译的二进制文件中,而应用程序的发布版本将调试符号放置在配套调试符号 (dSYM) 文件中,以减少应用程序的大小。
应用程序中的每个二进制文件——主要的应用程序可执行文件、框架和应用程序扩展——都有自己的 dSYM 文件。编译后的二进制文件及其伴随的 dSYM 文件通过构建 UUID 绑定在一起,该 UUID 由构建的二进制文件和 dSYM 文件记录。如果您从相同的源代码构建两个二进制文件,但具有不同的 Xcode 版本或构建设置,则两个二进制文件的构建 UUID 将不匹配。二进制文件和 dSYM 文件只有在它们具有相同的构建 UUID 时才能相互兼容。保留您分发的特定构建的 dSYM 文件,并在从崩溃报告中诊断问题时使用它们。
使用符号信息构建您的应用程序
在构建您的应用程序以进行分发之前,请验证调试信息格式构建设置是否设置为 DWARF with dSYM File。这会生成必要的 dSYM 文件,因此您可以在发布应用程序后诊断崩溃。有关为项目配置构建设置的说明,请参阅配置目标的构建设置。
这些 dSYM 文件是发布后调试应用程序时最常见的符号文件类型。
使用符号信息发布您的应用程序
在归档您的应用程序以进行分发时,Xcode 会为您的应用程序收集所有二进制文件和 dSYM 文件,并将它们存储在 Xcode 归档文件中。
如果您通过 App Store 分发您的应用程序或使用 TestFlight 进行 Beta 测试,您可以选择在将您的应用程序上传到 App Store Connect 时包含符号文件。您需要在构建中上传符号,以便 App Store 可以将您的应用程序的符号名称添加到崩溃报告中,然后再将它们交付给 Xcode 中的崩溃管理器。如果您在上传到 App Store 时未包含符号,您仍会通过崩溃管理器收到崩溃报告,但没有符号名称。如果 Mac 上有正确的 dSYM 文件,Xcode 会将符号名称添加到这些崩溃报告中。有关如何使用 dSYM 文件处理崩溃报告,请参阅使用崩溃报告和设备日志诊断问题。
重要的:
您必须为您分发的每个应用程序构建保留 Xcode 存档。如果没有此存档,您可能无法从崩溃报告中诊断问题。