У организатора Xcode 5 было представление, которое перечисляло бы все журналы сбоев. и мы могли бы перетащить сюда аварийные журналы. Но начиная с Xcode 6, я знаю, что они вывели устройства из строя и имеют новое окно для того же. Но я не нахожу место, где я просматриваю журналы сбоев, которые я перетаскиваю в Xcode 5 после перехода на Xcode 6. Кто-нибудь знает ответ?
190
Ответы:
Хорошо, я понял, что вы можете сделать это:
Xcode > Window > Devices
, выберите подключенный iPhone / iPad / etc вверху слева.Вероятно, у вас там много журналов, и чтобы упростить поиск импортированных журналов позже, вы можете просто удалить все журналы на этом этапе ... если только они не означают для вас деньги. Или, если вы не знаете точный момент времени, когда произошел сбой - он все равно должен быть записан в файле ... Я ленив, поэтому просто удаляю все старые журналы (на самом деле это заняло некоторое время).
источник
.crash
.Пишу этот ответ как для сообщества, так и для себя.
Если когда-либо возникают проблемы, символизирующие отчет о сбое, их можно преодолеть следующим образом:
Создайте отдельную папку, скопируйте
Foo.app
иFoo.app.dSYM
из соответствующей.xcarchive
в папку. Также скопируйте.crash
отчет в папку.Откройте отчет о сбое в TextEdit или в другом месте, перейдите в
Binary Images:
раздел и скопируйте туда первый адрес (например0xd7000
).cd
в папку. Теперь вы можете запустить следующую команду:xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 0x0033f9bb
Это будет символизировать символ по адресу
0x0033f9bb
. Пожалуйста, убедитесь, что вы выбрали правильное значение для-arch
параметра (его можно найти в первой строкеBinary Images:
раздела или найтиHardware Model:
в отчете о сбое и в поддерживаемых архивах приложения).Вы также можете скопировать необходимые адреса (например, стек вызовов потоков) из отчета о сбое непосредственно в текстовый файл (в TextEdit удерживайте Option и выберите необходимый текстовый блок или скопируйте и обрежьте), чтобы получить что-то вроде этого:
Теперь вы можете сохранить это в текстовом файле, например
addr.txt
, и выполнить следующую команду:Это даст хорошую символику для всех адресов одновременно.
PS
Перед выполнением вышеизложенного стоит проверить, что все настроено правильно (так как с
atos
радостью сообщит что-то для любого предоставленного адреса).Для проверки откройте отчет о сбое и перейдите в конец стека вызовов
Thread 0
. Первая строка с конца для отображения вашего приложения (обычно вторая), например:должен быть
main()
вызов. Символизация адреса (0x0033f9bb
в данном случае), как описано выше, должна подтвердить, что это действительноmain()
а не какой-то случайный метод или функция.Если адрес не совпадает с адресом
main()
, проверьте адрес загрузки (-l
опция) и арку (-arch
опция).PPS
Если вышеуказанное не работает из-за битового кода , загрузите dSYM для вашей сборки из iTunes Connect, извлеките исполняемый двоичный файл из dSYM (Finder> Показать содержимое пакета), скопируйте его в каталог и используйте его (т. Е.
Foo
) В качестве аргументatos
, вместоFoo.app/Foo
.источник
xcrun dwarfdump --uuid <path to executable>
./symbolicate.sh mycrash.crash MyApp.app arch64 output.crash
только оно будет символизировать полный отчет о сбое и даст вам его символическую версию. gist.github.com/nathan-fiscaletti/…Вы также можете сослаться на это, я написал пошаговую процедуру ручной символизации сбоя.
Повторная символизация аварии
ШАГ 1
Переместите все вышеупомянутые файлы (MyApp.app, MyApp-dSYM.dSYM и MyApp-Crash-log.crash) в папку с удобным именем, куда бы вы ни направлялись, используя терминал легко.
Для меня Desktop - самое легкодоступное место;) Итак, я переместил эти три файла в папку MyApp на Desktop.
ШАГ 2
Теперь настал черед Finder, перейдите по следующему пути, который применим для вашей версии XCODE.
Используйте эту команду, чтобы найти
symbolicatecrash
файл сценария,find /Applications/Xcode.app -name symbolicatecrash
Xcode 8, Xcode 9, Xcode 11
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
Xcode 7.3
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
XCode 7
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
Xcode 6
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
Ниже Xcode 6
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
Или
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources
ШАГ 3
Добавьте каталог найденного файла сценария symbolicatecrash в
$PATH
переменную env следующим образом:sudo vim /etc/paths.d/Xcode-symbolicatecrash
вставьте каталог файла сценария и сохраните файл. При открытии нового терминала вы можете звонитьsymbolicatecrash
в любую папку, используя команды, расположенные в/usr/bin
.Или
Скопируйте файл symbolicatecrash из этого места и вставьте его на рабочий стол / MyApp (Подождите ... Не следуйте за мной вслепую, я вставляю файл sybolicatecrash в папку MyApp, созданную на первом этапе в вашем любимом месте, содержащую три файла. )
ШАГ 4
Откройте Терминал и CD в папку MyApp.
- Нажмите Enter
- Нажмите Enter
Это оно !! На вашем терминале есть символические журналы… что же вы ждете? Теперь просто найдите ошибку и устраните ее;)
Удачного кодирования !!!
источник
xcode-select --print-path
Для меня файла .crash было достаточно. Без файла .dSYM и файла .app.
Я запустил эти две команды на компьютере Mac, где я собираю архив, и он работал:
источник
Существует более простой способ использования Xcode (без использования инструментов командной строки и поиска адресов по одному)
Возьмите любой файл .xcarchive. Если у вас есть один, прежде чем вы можете использовать это. Если у вас его нет, создайте его, запустив Product> Archive from Xcode.
Щелкните правой кнопкой мыши файл .xcarchive и выберите «Показать содержимое пакета».
Скопируйте файл dsym (версии приложения, которая потерпела крах) в папку dSYMs
Скопируйте файл .app (версии приложения, в котором произошел сбой) в папку «Продукты»> «Приложения».
Отредактируйте Info.plist и отредактируйте CFBundleShortVersionString и CFBundleVersion в словаре ApplicationProperties. Это поможет вам определить архив позже
Дважды щелкните по .xcarchive, чтобы импортировать его в Xcode. Это должен открыть Организатор.
Вернитесь к журналу сбоев (в окне «Устройства» в XCode)
Перетащите туда свой файл .crash (если его еще нет)
Весь журнал сбоев должен теперь быть символическим. Если нет, то щелкните правой кнопкой мыши и выберите «Re-символизировать журнал сбоев»
источник
Выполните эти шаги в Xcode 10, чтобы символизировать журнал сбоев от сборки приложения на том же компьютере:
источник
Если у вас есть файлы .dSYM и .crash в одной подпапке, вы можете предпринять следующие шаги:
$ atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc -[AtomicElementViewController myTransitionDidStop:finished:context:]
Официальный источник: https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATE_WITH_ATOS
источник
Xcode 11.2.1, декабрь 2019
**
**
Там мы сможем увидеть символические журналы аварий
Пожалуйста, смотрите ссылку для более подробной информации о символьных журналах сбоев
источник
Убедитесь, что имя вашего приложения Xcode не содержит пробелов. Это было причиной того, что это не сработало для меня. Так
/Applications/Xcode.app
работает, пока/Applications/Xcode 6.1.1.app
не работает.источник
Из документов Apple:
Символизация отчетов о сбоях с Xcode Xcode автоматически попытается символизировать все отчеты о сбоях, с которыми он сталкивается. Все, что вам нужно сделать для символизации, это добавить отчет о сбое в Xcode Organizer.
Xcode автоматически символизирует отчет о сбое и отображает результаты. Чтобы символизировать отчет о сбое, Xcode должен быть в состоянии найти следующее:
Бинарный файл и файл dSYM, вызывающий сбой приложения.
Двоичные файлы и файлы dSYM для всех пользовательских сред, с которыми связано приложение. Для каркасов, которые были построены из исходного кода с приложением, их файлы dSYM копируются в архив вместе с файлом dSYM приложения. Для фреймворков, созданных сторонними разработчиками, вам нужно будет обратиться к автору за файлом dSYM.
Символы для ОС, на которой было запущено приложение, когда оно падало. Эти символы содержат отладочную информацию для платформ, включенных в конкретный выпуск ОС (например, iOS 9.3.3). Символы ОС зависят от архитектуры - выпуск iOS для 64-битных устройств не будет включать символы armv7. Xcode автоматически скопирует символы ОС с каждого устройства, которое вы подключаете к вашему Mac.
Если какой-либо из них отсутствует, XCode может не иметь возможности символизировать отчет о сбое или только частично символизировать отчет о сбое.
источник
Самый простой процесс для обозначения журналов аварий:
Подождите 5 сек. Взрыв! вызовы приложения в трассировке стека будут символизированы! Вы все еще можете увидеть много символов, хотя! это внутренние вызовы библиотеки и фреймворка.
Это самый простой, испытанный и проверенный!
источник
**
**
Там мы сможем увидеть символические журналы аварий
Пожалуйста, смотрите ссылку для более подробной информации о символьных журналах сбоев
источник