哪里可以获得其他iOS版本的iOS系统符号

时间:2013-08-28 23:46:39

标签: ios xcode debug-symbols

请注意:我要求提供一个可以下载符号的地方,或者为Apple提供此类网站的确凿答案。 “重复”问题类似于我在问题中链接的问题:唯一建议的答案是访问物理设备或找到另一个拥有一个物理设备的开发人员。

我象征着一个故障转储,但只有我的应用程序代码中的行被符号化;系统代码没有。它看起来像这样:

Thread 0 Crashed:
0   libobjc.A.dylib                     0x39c195d0 0x39c16000 + 13776
1   QuartzCore                          0x33aefcad 0x33ade000 + 72877
2   QuartzCore                          0x33af3105 0x33ade000 + 86277
<snip>
13  UIKit                               0x33d862b9 0x33d2f000 + 357049
14  MyApp                               0x0005ef87 main (main.m:14)

...

Thread 7:
0   libsystem_kernel.dylib              0x3a101e30 0x3a101000 + 3632
1   CoreFoundation                      0x31ef82bb 0x31e61000 + 619195
2   CoreFoundation                      0x31ef7031 0x31e61000 + 614449
3   CoreFoundation                      0x31e6a23d 0x31e61000 + 37437
4   CoreFoundation                      0x31ec8c4b 0x31e61000 + 425035
5   MyApp                               0x0016f293 +[UA_ASIHTTPRequest runRequests] (UA_ASIHTTPRequest.m:4795)
6   Foundation                          0x3283b231 0x3278a000 + 725553
7   libsystem_c.dylib                   0x3a06b0e1 0x3a05a000 + 69857

我从this问题收集到这是因为崩溃来自iOS 6.1.4设备,我的〜/ Library / Developer / Xcode / iOS中没有iOS 6.1.4的符号DeviceSupport文件夹。

不幸的是,iOS 6.1.4是一个仅限iPhone 5的版本,我没有物理访问iPhone 5,我可以更新到6.1.4,因此从设备上取下符号就不行了。是否有 anyplace 我可以下载不同iOS版本的符号(没有运行这些版本的设备),还是被认为是Apple的机密?

3 个答案:

答案 0 :(得分:12)

我从真实设备(来自二手移动市场),iOS fireware和Xcode的iOS SDK收集了大部分系统符号。

您可以在此处下载所需的版本:

iOS system symbol file(7.0-9.2)

iOS system symbol file(9.2.1-10.2)

阅读iOS-System-Symbols了解更多详情。如果我获得新的符号文件,我会将其添加到google驱动器共享文件夹中。您可以关注上面github存储库的最新更新。

如何使用

  1. 当您需要表示崩溃报告时,请查看Code TypeOS Version部分。如:
  2. Code Type: ARM-64

    OS Version: iOS 10.2 (14C82)

    这意味着您需要arm64系统的10.2 (14C82)个版本符号。

    1. 在我的共享文件夹中找到该包并将其解压缩到~/Library/Developer/Xcode/iOS DeviceSupport。 (查看文件的名称和路径,它应该是~/Library/Developer/Xcode/iOS DeviceSupport/10.2 (14C82)/Symbols)。

    2. 使用Xcode的symbolicatecrash工具来表示崩溃报告。此工具将自动搜索iOS DeviceSupport路径中的系统符号。

    3. 符号列表

      7.0 (11A465)10.2 (14C92)共有50个版本。(如果你计算的是具有CPU架构的操作系统版本,它是85.我有76个版本。)

      以下是从7.010.2的符号列表,其CPU架构版本为I。

      |    OS Version     | collected CPU version |
      |-------------------|---------------------- |
      |   10.2 (14C92)    |   arm64,armv7s        |
      |   10.1.1 (14B150) |   arm64,armv7s        |
      |   10.1.1 (14B100) |   arm64,armv7s        |
      |   10.1 (14B72c)   |   arm64,armv7s        |
      |   10.1 (14B72)    |   arm64,armv7s        |
      |   10.0.3 (14A551) |   arm64,armv7s        |
      |   10.0.2 (14A456) |   arm64,armv7s        |
      |   10.0.1 (14A403) |   arm64,armv7s        |
      |   10.0(14A346)    |   none                |
      |   9.3.5 (13G36)   |   arm64,armv7s,armv7  |
      |   9.3.4 (13G35)   |   arm64,armv7s,armv7  |
      |   9.3.3 (13G34)   |   arm64,armv7s,armv7  |
      |   9.3.2(13F72)    |   none                |
      |   9.3.2 (13F69)   |   arm64,armv7s,armv7  |
      |   9.3.1 (13E238)  |   arm64,armv7s,armv7  |
      |   9.3(13E237)     |   armv7s,armv7        |
      |   9.3(13E236)     |   armv7               |
      |   9.3(13E234)     |   none                |
      |   9.3 (13E233)    |   arm64,armv7s,armv7  |
      |   9.2.1 (13D20)   |   arm64,armv7s        |
      |   9.2.1 (13D15)   |   arm64,armv7s,armv7  |
      |   9.2 (13C75)     |   arm64,armv7s,armv7  |
      |   9.1 (13B143)    |   arm64,armv7s,armv7  |
      |   9.0.2(13A452)   |   arm64,armv7s,armv7  |
      |   9.0.1(13A404)   |   arm64,armv7s,armv7  |
      |   9.0 (13A344)    |   arm64,armv7s,armv7  |
      |   8.4.1 (12H321)  |   arm64,armv7s,armv7  |
      |   8.4 (12H143)    |   arm64,armv7s,armv7  |
      |   8.3 (12F70)     |   arm64,armv7s,armv7  |
      |   8.3 (12F69)     |   arm64,armv7s,armv7  |
      |   8.2 (12D508)    |   arm64,armv7s,armv7  |
      |   8.1.3 (12B466)  |   arm64,armv7s,armv7  |
      |   8.1.2 (12B440)  |   arm64,armv7s,armv7  |
      |   8.1.1 (12B436)  |   arm64,armv7s        |
      |   8.1.1 (12B435)  |   armv7s,armv7        |
      |   8.1 (12B411)    |   arm64,armv7s,armv7  |
      |   8.1 (12B410)    |   arm64,armv7s,armv7  |
      |   8.0.2 (12A405)  |   arm64,armv7s,armv7  |
      |   8.0.1(12A402)   |   armv7s,armv7        |
      |   8.0 (12A366)    |   arm64,armv7s        |
      |   8.0 (12A365)    |   arm64,armv7s,armv7  |
      |   7.1.2 (11D257)  |   armv7s,armv7        |
      |   7.1.1 (11D201)  |   arm64,armv7s,armv7  |
      |   7.1 (11D167)    |   arm64,armv7s,armv7  |
      |   7.0.6 (11B651)  |   arm64,armv7s,armv7  |
      |   7.0.4 (11B554a) |   arm64,armv7s,armv7  |
      |   7.0.3 (11B511)  |   arm64,armv7s,armv7  |
      |   7.0.2(11A501)   |   armv7s,armv7        |
      |   7.0.1(11A470a)  |   armv7s              |
      |   7.0(11A465)     |   arm64,armv7s,armv7  |
      

      缺少符号

      我仍然怀念这些CPU的符号,如果您有任何符号,请分享

      | missed OS Version |   missed CPU Version  |   description
      |-------------------|-----------------------|-----------------
      |  10.0(14A346)     |  arm64                |  iPhone 7 and 7 Plus-only, default OS when leave factory 
      |  9.3.2(13F72)     |  arm64                |  iPad Pro 9.7-inch-only, fix bricked problem
      |  9.3(13E237)      |  arm64                |  5s, iPad Air and iPad mini2 only, fix activation problem
      |  9.3(13E234)      |  arm64                |  6s, 6s Plus and iPad Pro 9.7-inch only
      |  8.1.1 (12B435)   |  arm64                |  5s, iPad Air and iPad mini2 only
      |  8.0.1(12A402)    |  arm64                |  `8.0.1`was pulled soon after released.Because it has serious bugs 
      |  7.1.2 (11D257)   |  arm64                |    
      |  7.0.2(11A501)    |  arm64                |  
      |  7.0.1(11A470a)   |  arm64                |  5s only  
      

      如何检查符号文件包含的CPU版本

      如果您已有系统符号文件,并想知道它包含哪个CPU版本,请检查路径中的文件,如10.2 (14C92)/Symbols/System/Library/Caches/com.apple.dyld。应该有名为dyld_shared_cache_arm64dyld_shared_cache_armv7sdyld_shared_cache_armv7的文件。

      如果你错过了一个,那就意味着你没有那个CPU版本的符号。

答案 1 :(得分:6)

我只知道很长时间:下载ipsw文件并使用黑客工具从中提取符号。也许任何人都可以轻松找到方法?

upd:我发现解决方案更简单

我试图象征iOS 7.0.1符号,但不成功(与iOS 6.1.4相同的原因)

后续步骤可以帮助我:

  1. 我编辑了.crash文件并将iOS 7.0.1更改为iOS 7.0
  2. 备份并删除~/Library/Developer/Xcode/iOS DeviceSupport
  3. 中的所有内容
  4. 从Xcode5运行symbolicatecrash(包含iOS 7符号)
  5. 忽略一些这些步骤对我来说是不成功的结果。

    我希望它可以帮到你。

答案 2 :(得分:1)

您应该能够将6.1.something SDK符号链接到6.1.4,类似于我在这里的回答(https://stackoverflow.com/a/19383685/473067)。在这种情况下,当然,符号链接应该在Xcode5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

我们经常使用足够接近的SDK版本来表示崩溃,但我们使用自己的符号化脚本而不是Xcode,并且符号并不总是匹配,因此YMMV。