构建时无法符号化 macOS 崩溃日志/没有 dSYM 文件

问题描述

我将 Mac Catalyst 应用的 Beta 版本分发给具有开发者 ID 的 Beta 测试人员,而 Beta 测试人员会通过电子邮件向我发送崩溃日志。我可以将 iOS 崩溃日志拖到 Xcode 的“查看设备日志”窗口中以对它们进行符号化,但是当我尝试使用 macOS 崩溃日志时,该窗口不会突出显示,也不会收到拖动的文件

从命令行执行 tutorial to symbolicate manually 后,我意识到我的构建档案中没有 dSYM 文件。如果我在 Xcode 管理器中单击一个构建,选择 Show In Finder,然后导航到存档的 dSYMs 文件夹,它是空的。

实际上,我的应用程序的最新版本使用 AppKit bundle支持多窗口,并且这些版本在 dSYMs 文件夹中有一个 AppKitBridge.bundle.dSYM 文件。我不认为这会阻止为主应用程序创建 dSYM 文件,因为我可以回顾旧版本的档案,而且它也不是为那些生成的。

根据 Apple 的 Xcode documentation,我需要使用 dSYM 文件将调试信息格式构建设置设置为 DWARF,我这样做:

Project build settings

Target build settings

这听起来像是 Xcode 不允许我将日志拖入的原因吗?如果是这样,我还需要什么来生成 dSYM 文件

解决方法

根据上面屏幕截图中显示的设置,看起来 iOS 和 macOS 版本都使用带有 dSYM 文件值的 DWARF。但为了确定起见,我为 macOS 平台添加了单独的值,如下所示:

Xcode target build settings

这似乎没有必要,但对于更了解项目和目标的人来说,这可能是有意义的。无论如何,现在Xcode在构建macOS版本时会生成一个dSYM文件。

但是,从新版本生成的崩溃日志仍不会放入“查看设备日志”窗口中进行符号化。我尝试从命令行使用 symbolicatelog 并收到错误“不支持的崩溃日志版本:12”。这甚至发生在与我的计算机相同的 macOS 版本上生成的崩溃日志中,所以我不知道为什么我的本地 symbolicatelog 工具无法处理它。我最终使用了 this SO answer 中描述的 atos 工具来一次符号化日志一行。这很乏味,但有效。