Where to get iOS system symbols for other iOS versions
Asked Answered
P

3

26

Please note: I am asking for a place I can download the symbols, or for a conclusive answer that such a site is prohibited by Apple. The "duplicate" question is similar to the one I linked in my question: the only suggested answer is to get access to a physical device or to find another developer who has one.

I've symbolicated a crashdump, but only the lines in my application code get symbolicated; system code does not. It looks something like this:

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

I gather from this question that this is because the crash came in from an iOS 6.1.4 device, and I do not have symbols for iOS 6.1.4 in my ~/Library/Developer/Xcode/iOS DeviceSupport folder.

Unfortunately, iOS 6.1.4 is an iPhone 5-only release, and I don't have physical access to an iPhone 5 which I can update to 6.1.4, so getting the symbols off the device is out. Is there anyplace I could download the symbols for different iOS versions (without the devices that run those versions), or are these considered Apple confidential?

Psychoactive answered 28/8, 2013 at 23:46 Comment(1)
This question has not been answered. I am asking for a place I can download the symbols, or for a conclusive answer that such a site is prohibited by Apple. The "duplicate" question is similar to the one I linked in my question: the only suggested answer is to get access to a physical device or to find another developer who has one.Psychoactive
M
17

I've collected most of system symbols from real devices (from secondhand moblie market), iOS firewares and Xcode's iOS SDKs.

You can download the version you need here:

iOS system symbol file(7.0-9.2)

iOS system symbol file(9.2.1-10.2)

Read iOS-System-Symbols for more details.If I get new symbol file, i will add it into the google drive sharing folder.You can follow the latest update from the github repository above.

How to use

  1. When you need to symbolicate a crash report, check the Code Type and OS Version section. Such as:

Code Type: ARM-64

OS Version: iOS 10.2 (14C82)

That means you need arm64version symbols of 10.2 (14C82)system.

  1. Find the package in my sharing folder and extract it to ~/Library/Developer/Xcode/iOS DeviceSupport. (Check the file's name and path, it should be~/Library/Developer/Xcode/iOS DeviceSupport/10.2 (14C82)/Symbols).

  2. Use Xcode'ssymbolicatecrash tool to symbolicate your crash report. This tool will search system symbols in theiOS DeviceSupportpath automatically.

Symbols list

There are 50 versions from 7.0 (11A465) to 10.2 (14C92).(if you count OS version with CPU architecture, it's 85. I've got 76 of them).

Here is the list of symbols from 7.0to10.2, with their CPU architecture version I've got.

|    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  |

Missing symbols

I still miss these CPU's symbols, if you have any of them, please share:

| 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  

How to check which CPU version the symbol file contains

If you already have a system symbol file, and want to know which CPU version it contains, check files in the path like10.2 (14C92)/Symbols/System/Library/Caches/com.apple.dyld. There should be file nameddyld_shared_cache_arm64,dyld_shared_cache_armv7s,dyld_shared_cache_armv7.

If you miss one, that means you don't have that CPU version's symbols.

Mandle answered 19/12, 2016 at 11:20 Comment(1)
I have an "old" iPad which gives me arm64 symbols, and Apple reviewers gave me crash reports for the same iOS version that I have but for arm64e architecture, so I couldn't symbolicate. Your symbols collection saved my life!Chapen
R
6

I know only long hard way: download ipsw file and extract symbols from it with hackers tools. Maybe anyone can find way easier?

upd: I have found solution simpler.

I tried to symbolify iOS 7.0.1 symbols, but unsucessfull (same reason as you have with iOS 6.1.4)

Next steps help me:

  1. I edited .crash file and change iOS 7.0.1 to iOS 7.0
  2. backup and delete everything from ~/Library/Developer/Xcode/iOS DeviceSupport
  3. run symbolicatecrash from Xcode5 (which contains iOS 7 symbols)

Ignoring some а these steps do unsuccesfull results for me.

I hope it helps you.

Rouvin answered 30/9, 2013 at 9:48 Comment(1)
This hack (steps 1 to 3) helped me get some meaningful data from a crash log for iOS 7.0.2 after hours of banging my head against a brick wall. Is far from perfect, but is possible to get some symbols at least, which will do as a stopgap until Apple actually release this data.Orsini
W
1

You should be able to symlink the 6.1.something SDK that you have to 6.1.4, similar to my answer here (https://mcmap.net/q/537253/-xcode-4-6-3-not-detecting-iphone-device-which-has-7-0-2). In this case, of course, the symlink should be in Xcode5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs.

We routinely symbolicate crashes using SDK versions that are close enough, but we use our own symbolification script instead of the Xcode one, and the symbols don't always match, so YMMV.

Windproof answered 15/10, 2013 at 14:51 Comment(1)
This is good to know. As you said, it's not perfect, but best-guess symbolication sure beats no symbolication at all - and it's easy to trash the symlink when/if I can lay hands on the proper symbols.Psychoactive

© 2022 - 2024 — McMap. All rights reserved.