Как символизировать сбои в Xcode 7.3?

Можете ли вы помочь мне отобразить мои аварии?

В Xcode 7.3, Window → Organizer → Crashes, у меня есть отчеты о сбоях из моих последних тестов TestFlight. Они были построены на этом Mac, и все архивы с соответствующими dSYM находятся на вкладке Архивы. Приложение разделено на несколько фреймворков и основное приложение, и многие из них представляют собой комбинацию Swift и Objective C. В журнале сбоев я вижу правильное имя фреймворков и приложений, но все записи для моих фреймворков и приложение находится в шестнадцатеричном формате. UIKit очень хорошо символизируется.

Когда я смотрю в iTunes Connect, он говорит "Да" на "Включает символы" и позволяет мне загружать dSYM. При построении параметр "Формат отладочной информации" был установлен на "DWARF с dSYM". Я попробовал установку "Strip Debug Symbols во время копирования"  и "Связанный с лентой продукт" на "Нет", чтобы узнать, не изменилось ли это. Это не так.

Я не могу найти приложение symbolicatecrash в своей системе, даже не в /usr/bin или/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash, но у меня есть старый Xcode 5, где я мог бы это схватить. Однако он больше не разрешает символы.

У меня такая же проблема в Инструментах, если я профилирую свое приложение, UIKit символизируется просто отлично, но мои фреймворки и приложение показывают только шестнадцатеричный.

Я знаю, что было много сообщений об этом, но я много им переживаю с 7,3 бета-периода и до сих пор и не нашел решения

Ответ 1

Местоположение symbolicatecrash изменилось в Xcode 7.3:

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

Ответ 2

Прочитав это:

https://developer.apple.com/library/content/technotes/tn2151/_index.html

вы узнаете, что App Store несет ответственность за символику отчетов о сбоях, которые поступают из TestFlight - не Xcode. И похоже, что App Store очень ненадежен при этом.

Вот обходной путь.

  • Перейдите на вкладку "Архивы" в окне "Органайзер" и убедитесь, что для любой сборки, для которой вам нужно символизировать отчет о сбое, вы нажали кнопку "Загрузить dSYMS..." на правой стороне страницы. Это необходимо, если вы загружаетесь в BitCode.

  • Прикрепите устройство iOS так, чтобы оно отображалось в окне "Устройства".

  • Выберите устройство и нажмите "Просмотреть журналы устройств".

  • Теперь вернитесь в окно "Организатор", выберите вкладку "Сбой" и выберите один из аварий, которые не получили символику.

  • Щелкните правой кнопкой мыши по нему и выберите "Показать в Finder".

  • Щелкните правой кнопкой мыши на раскрытом пакете .xccrashpoint и выберите "Показать содержимое пакета".

  • Перейдите в DistributionInfos → all → Logs.

  • Перетащите любой из файлов .crash в левую часть панели "Просмотр журналов устройств" в окне "Устройства".

  • Подождите секунду или два для Xcode, чтобы символизировать сбой.

Ответ 3

То же самое здесь. С трудом находив символический crash после обновления до 7.3.

Однако вы все равно можете использовать atos. Вы можете найти учебник здесь Символьный сбой в iOS8 с Xcode 6.1

Ответ 4

Я не добавляю символы в свое приложение, поэтому App Store не может символизировать меня. Я использовал следующее обходное решение, чтобы символизировать все краш-журналы, которые XCode загружает из магазина. Эти инструкции предназначены для XCode 8. Пути для символьного приложения crash будут отличаться от версии к версии XCode, но идеи должны быть одинаковыми в каждой версии.

  • Поместите символы, где символический найдет их: Поместите ваши символы (.dsym) в каталог архивов. Вы можете найти это, перейдя в Organizer, нажав контекст на архив и выбрав "show in finder". Перейдите в каталог архивов (например, /Users/USERNAME/Library/Developer/Xcode/Archives) и поместите там свой dsym файл. Это может быть и в других местах, я просто подтвердил, что это работает.
  • Загрузите журналы сбоев:. В XCode убедитесь, что вы загрузили crashlogs для сборки, которую хотите пометить (Organizer- > Crashes, нажмите на свое приложение, а затем выберите версию ваше приложение в панели справа от списка приложений).
  • Найдите журналы сбоев на диске:. На панели с версией приложения и номером сборки щелкните контекст на одной из аварий и выберите "Показать в Finder". Перейдите в папку "Сбой" и обратите внимание на это местоположение, например: /Users/USERNAME/Library/Developer/Xcode/Products/com.company-name.Your-App/VERSION/Crashes
  • Установите DEVELOPER_DIR для символической атаки в командной строке: Откройте окно терминала и компакт-диск в каталоге сбоев с шага 3 и установите DEVELOPER_DIR следующим образом: cd /Users/USERNAME/Library/Developer/Xcode/Products/com.companyname.Your-App/VERSION/Crashes/ export set DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
    (это должно быть расположение каталога "Разработчик" внутри вашего пакета приложений XCode).
  • Найдите символический crash script: symbolicatecrash знает, как найти ваши символические журналы сбоев, используя dsym с шага 1. Apple перемещает его от версии к версии xcode. Вы можете найти это следующим образом: find /Applications/Xcode.app/ -name symbolicatecrash. В XCode 8 он находится в /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
  • Резервное копирование папки аварийных сообщений. Вы можете создать резервную копию папки аварийных сообщений (/Users/USERNAME/Library/Developer/Xcode/Products/com.companyname.Your-App/VERSION/Crashes/)
  • Символизировать все ваши сбои. Убедитесь, что вы все еще находитесь в каталоге сбоев с шага 4 и введите
    for i in `find . -type f -name \*.crash`; do cat $i | /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash --output $i.sym; mv $i.sym $i; done;
    Это символизирует каждый файл .crash в выходной файл, а затем копирует его обратно в исходный, несимметричный файл.
  • Просмотр сбоев Возврат к организатору сбоев и просмотр символических сбоев

Ответ 5

Я попытался скопировать файл symbolicatecrash из xCode 7.2 и вставить его в xCode 7.3 по следующему пути:

/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/Current/Resources/

Am использует Crasher script для обозначения отчетов о сбоях Как использовать Crasher

Ответ 6

В соответствии с документацией Xcode 9.0:

Организатор сбоев символизирует несимметричные журналы, если они, используя локальный .dSYM, индексированный Spotlight. (22550064)

Вы можете узнать больше об этом в Документация Xcode.