从何处获取其他iOS版本的iOS系统符号

从何处获取其他iOS版本的iOS系统符号,ios,xcode,debug-symbols,Ios,Xcode,Debug Symbols,请注意:我想找一个可以下载这些符号的地方,或者要一个结论性的答案,这样的网站是苹果公司禁止的。“重复”问题与我在问题中链接的问题类似:唯一建议的答案是访问物理设备或找到另一个拥有物理设备的开发人员。 我已经将崩溃转储符号化,但只有应用程序代码中的行被符号化;系统代码不存在。它看起来像这样: Thread 0 Crashed: 0 libobjc.A.dylib 0x39c195d0 0x39c16000 + 13776 1 QuartzCore

请注意:我想找一个可以下载这些符号的地方,或者要一个结论性的答案,这样的网站是苹果公司禁止的。“重复”问题与我在问题中链接的问题类似:唯一建议的答案是访问物理设备或找到另一个拥有物理设备的开发人员。

我已经将崩溃转储符号化,但只有应用程序代码中的行被符号化;系统代码不存在。它看起来像这样:

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
线程0崩溃:
0 libobjc.A.dylib 0x39c195d0 0x39c16000+13776
1夸脱芯0x33aefcad 0x33ade000+72877
2夸脱芯0x33af3105 0x33ade000+86277
13 UIKit 0x33d862b9 0x33d2f000+357049
14 MyApp 0x0005ef87主管道(主管道:14)
...
线程7:
0 libsystem_kernel.dylib 0x3a101e30 0x3a101000+3632
1芯基础0x31ef82bb 0x31e61000+619195
2芯基础0x31ef7031 0x31e61000+614449
3芯基础0x31e6a23d 0x31e61000+37437
4芯基础0x31ec8c4b 0x31e61000+425035
5 MyApp 0x0016f293+[UA_ASIHTTPRequest运行请求](UA_ASIHTTPRequest.m:4795)
6基金会0x328 3B23 1 0x327 8A000 + 725553
7 libsystem_c.dylib 0x3a06b0e1 0x3a05a000+69857
我想这是因为崩溃来自iOS 6.1.4设备,而我的~/Library/Developer/Xcode/iOS DeviceSupport文件夹中没有iOS 6.1.4的符号


不幸的是,iOS 6.1.4是一个仅适用于iPhone 5的版本,而且我无法访问iPhone 5,我无法将其更新为6.1.4,因此无法从设备上获取符号。是否有任何地方可以下载不同iOS版本的符号(没有运行这些版本的设备),或者这些符号被视为苹果的机密?

我知道的唯一艰难的方法是:下载ipsw文件并使用黑客工具从中提取符号。也许有人能找到更简单的方法

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

我试图用iOS 7.0.1符号来表示,但没有成功(与iOS 6.1.4的原因相同)

接下来的步骤帮助我:

  • 我编辑了
    .crash
    文件并将iOS 7.0.1更改为iOS 7.0
  • 备份并删除
    ~/Library/Developer/Xcode/iOS设备支持中的所有内容
  • 从Xcode5(包含iOS 7符号)运行symbolicatecrash
  • 忽略一些步骤对我来说并不完全成功


    我希望它能帮助您。

    您应该能够将您所拥有的6.1.something SDK符号链接到6.1.4,类似于我这里的答案()。当然,在这种情况下,符号链接应该位于
    Xcode5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs


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

    我从真实设备(二手moblie market)、iOS Fireware和Xcode的iOS SDK收集了大部分系统符号

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

    阅读了解更多详细信息。如果我得到新的符号文件,我会将其添加到google驱动器共享文件夹中。您可以从上面的github存储库了解最新更新

    如何使用
  • 当需要对崩溃报告进行符号化时,请检查
    代码类型
    操作系统版本
    部分。例如:
  • 代码类型:ARM-64

    操作系统版本:iOS 10.2(14C82)

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

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

  • 使用Xcode的
    symbolicatecrash
    工具对崩溃报告进行符号化。此工具将自动搜索
    iOS设备支持
    路径中的系统符号

  • 符号列表 从
    7.0(11A465)
    10.2(14C92)
    ,共有50个版本(如果你算上CPU架构的操作系统版本,是85个,我有76个)

    下面是从
    7.0
    10.2
    的符号列表,以及我得到的CPU架构版本

    |    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\u shared\u cache\u arm64
    dyld\u shared\u cache\u armv7s
    dyld\u shared\u cache\u armv7


    如果您遗漏了一个,则表示您没有该CPU版本的符号。

    此问题尚未得到回答。我要的是一个可以下载这些符号的地方,或者是一个苹果禁止此类网站的结论性答案。“重复”问题与我在问题中链接的问题类似:唯一建议的答案是访问物理设备或找到另一个拥有物理设备的开发人员。在我的头撞到砖墙几个小时后,这个黑客(步骤1到3)帮助我从iOS 7.0.2的崩溃日志中获得了一些有意义的数据。虽然还远远不够完美,但至少有可能得到一些符号,在苹果真正发布这些数据之前,这些符号只是权宜之计。正如你所说的,它并不完美,但最好的猜测符号肯定比没有符号好——而且很容易把它扔掉