Подтвердить что ты не робот

Где получить системные символы iOS для других версий iOS

Обратите внимание: я прошу указать место, где я могу загрузить символы, или для окончательного ответа, что такой сайт запрещен Apple. "Повторяющийся" вопрос похож на тот, который я связал в своем вопросе: единственный предложенный ответ - получить доступ к физическому устройству или найти другого разработчика, у которого есть.

Я символизировал crashdump, но только строки в моем коде приложения символизируются; системного кода нет. Это выглядит примерно так:

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

Из этого возникает вопрос, что это связано с тем, что с устройства iOS 6.1.4 произошел сбой, и у меня нет символов для iOS 6.1.4 в мою папку ~/Library/Разработчик/Xcode/iOS DeviceSupport.

К сожалению, iOS 6.1.4 является выпуском iPhone 5, и у меня нет физического доступа к iPhone 5, который я могу обновить до 6.1.4, поэтому выключение символов с устройства отсутствует. Есть ли где-нибудь я могу загрузить символы для разных версий iOS (без устройств, которые запускают эти версии), или они считаются Apple конфиденциальными?

4b9b3361

Ответ 1

Я собрал большинство системных символов с реальных устройств (с рынка подержанных мобильных телефонов), iOS-плейеры и SDK Xcode iOS.

Вы можете скачать версию, которая вам нужна:

файл системного символа iOS (7.0-9.2)

системный символ системы iOS (9.2.1-10.2)

Подробнее читайте iOS-System-Symbols. Если я получу новый файл символа, я добавлю его в папку общего доступа к диску google. Вы можете следуйте последним обновлениям из репозитория github выше.

Как использовать

  • Когда вам нужно символизировать отчет о сбое, проверьте раздел Code Type и OS Version. Например:

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. Используйте инструмент symbolicatecrash Xcode, чтобы символизировать ваш отчет о сбое. Этот инструмент автоматически будет искать системные символы в пути iOS DeviceSupport.

Список символов

Есть 50 версий от 7.0 (11A465) до 10.2 (14C92). (если вы подсчитаете версию ОС с архитектурой процессора, то это 85. У меня их 76).

Вот список символов от 7.0 до 10.2, с их версией архитектуры процессора.

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

Отсутствующие символы

Я все еще пропускаю эти символы процессора, , если у вас есть какие-либо из них, пожалуйста, поделитесь:

| 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  

Как проверить, какая версия процессора содержит файл символа

Если у вас уже есть системный файл символов и вы хотите узнать, какая версия его содержит, проверьте файлы на пути, как 10.2 (14C92)/Symbols/System/Library/Caches/com.apple.dyld. Должен быть файл с именем dyld_shared_cache_arm64, dyld_shared_cache_armv7s, dyld_shared_cache_armv7.

Если вы пропустили один, это означает, что у вас нет этих символов версии CPU.

Ответ 2

Я знаю только длинный трудный путь: загрузите файл ipsw и извлеките из него символы с помощью инструментов хакеров. Может быть, любой может найти путь легче?

upd: Я нашел решение проще.

Я попытался символизировать символы iOS 7.0.1, но unsucessfull (по той же причине, что и у iOS 6.1.4)

Следующие шаги помогут мне:

  • Я редактировал файл .crash и менял iOS 7.0.1 на iOS 7.0
  • сохранить и удалить все из ~/Library/Developer/Xcode/iOS DeviceSupport
  • запустите symbolicatecrash из Xcode5 (который содержит символы iOS 7)

Игнорирование некоторых этих шагов делает неуспешные результаты для меня.

Надеюсь, это поможет вам.

Ответ 3

Вы должны иметь возможность символически ссылаться на SDK 6.1.something, который у вас есть на 6.1.4, как и мой ответ здесь (fooobar.com/info/275964/...). В этом случае, конечно, символическая ссылка должна быть в Xcode5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs.

Мы обычно символизируем сбои с использованием SDK-версий, которые достаточно близки, но вместо Xcode мы используем собственную символику script, а символы не всегда совпадают, поэтому YMMV.