我想知道是否有人可以告诉我 Xcode 在插入设备后说:“处理符号文件”时实际上在做什么?
8 回答
它从设备下载(调试)符号,因此可以在具有该特定 iOS 版本的设备上进行调试,也可以符号化在该 iOS 版本上发生的崩溃报告。
由于符号是特定于 CPU 的,因此仅当您为特定的 iOS 设备以及特定的 CPU 类型导入了符号时,上述方法才有效。当前需要的 CPU 类型是 armv7(例如 iPhone 4、iPhone 4s)、armv7s(例如 iPhone 5)和 arm64(例如 iPhone 5s)。
因此,如果您想符号化在带有 armv7s 的 iPhone 5 上发生的崩溃报告,并且只有该特定 iOS 版本的 armv7 符号,Xcode 将无法(完全)符号化崩溃报告。
在 Xcode 版本 6.1.1 (6A2008a) 中,在“处理符号文件”之后,在 ~/Library/Developer/Xcode/iOS DeviceSupport/ 中创建了一个包含与设备相关的符号(包括 iOS 版本和 CPU 类型)的文件夹,如下所示:
在我的情况下,象征意义是永远的。我用开/关和主页按钮强制重启我的手机。现在很快完成了符号化,我开始通过 xcode 运行我的应用程序。
我知道这不是一个技术解决方案,但我让我的 iphone 通过电缆与计算机连接,然后断开设备与计算机的连接并再次连接(再次通过电缆)对我有用,因为我无法使用以下解决方案解决它之前提供的。
它将从设备检索到的崩溃日志与应用程序的存档(符号化为正确)版本进行比较,以尝试检索代码中发生崩溃的位置。
查看xcode 符号文件位置了解详细信息
恼人的错误。我通过将电缆直接插入 iPad 解决了这个问题。出于某种原因,如果我将 iPad 放在 Apple 的直通支架上,这个过程将永远无法完成。
添加与您的 iPhone iOS 对应的 SDK 版本,例如:iOS 10.3
小路:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
正在下载。完成后,就OK了。如图所示: