2016-07-28 7 views
0

Я широко изучил эту ситуацию, и ситуация, с которой сталкиваются люди, связана с другой версией Xcode (и, следовательно, с разными вариантами сборки) или наличием файла dSYM.Пустая папка dSYM в архиве Xcode

Итак, это ситуация. Я получил отчет о сбое через Xcode. Это просто адреса памяти. Попытка открыть его в проекте дает мне одинаковые адреса памяти. Мысль о ручной символике, но для этого мне нужен мой файл dSYM, соответствующий архиву, который я построил. Но когда я показываю содержимое пакета для архива, который я построил в finder, его папка dSYM пуста.

Мои настройки Xcode на момент архивирования были:

DEBUG_INFORMATION_FORMAT: DWARF with dSYM File

STRIP_INSTALLED_PRODUCT: Yes Переключение No не имеет никакого значения.

DEPLOYMENT_POSTPROCESSING: No Переключение на Yes не имеет значения.

Кроме того, я выбрал «Включить символы» при загрузке архива в iTunes Connect.

Процесс развертывания с Apple довольно запутанный, как и ад, без необходимости беспокоиться о том, что когда авария происходит, resport на самом деле читабельна!

Так что мои вопросы:

1) Почему мой архив отсутствует файл dSYM?

2) Если бы файл dSYM был сгенерирован, то где это могло быть?

3) Если у меня действительно нет файла dSYM, могу ли я как-нибудь получить человеко-читаемые имена символов? У меня есть исходный архив, который я загрузил, и доступ к исходному коду для этой сборки.

3a) Если I Product> Archive again (и если на этот раз генерируется dSYM), могу ли я использовать этот файл dSYM? Или у него будет другой UUID, что приведет к несовместимости с причиной сбоя журнала ... ну ... Apple?

версия Xcode: 6,4

Вот что мой журнал аварии выглядит в Xcode Организатор: enter image description here

Спасибо.

EDIT:

я повышен до Xcode 7.3, прежде чем пытаться это, но он также может работать на версии 6.

Решение на вопрос (1), чтобы установить следующие в настройках сборки проекта:

GCC_GENERATE_DEBUGGING_SYMBOLS

ответ

1

На вопрос 1), я также не знаю. Это может быть ошибка Xcode. Вы можете архивировать
тот же код еще раз, а затем сгенерировать тот же файл dSYM.

Для вопроса 2) вы можете искать «dSYM» в папке «~/Library», потому что в нем обычно выводится файл «dSYM». Если не найден, попробуйте выполнить поиск по всему диску.

Для вопроса 3), вы должны иметь файл символа системной библиотеки, который журнал сбоев указан в разделе «Двоичные изображения». Вы можете найти его в «~/Library/Developer/Xcode/iOS DeviceSupport». Если не найден, вы можете подключить iPhone с той же версией ОС, что и в журнале сбоев, к Xcode. После завершения обработки Xcode файл символа системной библиотеки iPhone может быть скопирован в папку. Затем вы можете повторно символизировать журнал сбоев.

На вопрос 3a). Для одного и того же кода приложения у разных архивов может быть другой файл dSYM (UUID). Если вы используете его для обозначения журнала сбоев, символическая линия сбоя очень близка к реальной линии аварийной ситуации, поэтому это также поможет вам вывести реальную причину сбоя.

С вашего скриншота, только одна строка из вашего кода приложения не будет отображаться. Теперь вы можете создать файл dSYM вашего приложения, используя код приложения, который заставляет архив снова архивировать. После создания файла dSYM используйте командную строку dwarfdump -u yourApp.app.dSYM, чтобы получить UUID, затем проверьте uuid, если он содержится в первой строке «Двоичные изображения». Если нет, вы можете изменить UUID в первой строке «Двоичные изображения» так же, как новый UUID, полученный от dwarfdump -u XXX.dSYM, Обратите внимание на архитектуру процессора. Закончите это, вы можете повторно символизировать журнал сбоев в Xcode или использовать командную строку symbolicatecrash crashreport.crash yourApp.app.dSYM. Обратите внимание: вы должны гарантировать, что версия вашего кода приложения будет такой же, как версия в журнале сбоев, если нет, результат будет невероятным.

+0

Что касается вашего решения (3), что вы имеете в виду раздел 'бинарных изображений'? Где этот раздел? Я отредактировал мой вопрос с снимком экрана моего журнала сбоев. Я не вижу такого раздела. – Ash

+0

Аварийный журнал не отображается полностью в случае сбоев Xcode. Стандартный журнал сбоев объясняется в [здесь] (https://developer.apple.com/library/ios/technotes/tn2151/_index.html#top). Если вы хотите полностью символизировать журнал сбоев, вы должны иметь все файлы символов, перечисленные в разделе «Двоичные изображения», и каждый файл должен быть помечен UUID, указанным в разделе «Двоичные изображения». Теперь вы можете полностью символизировать свой крах, если вы создали файл dSYM вашего кода. – hwris

+0

Я сделал «Показать содержимое пакета» в файле xccrashpoint и перешел на поиск, чтобы найти 3 .crash-файла. Когда я открываю их в текстовом редакторе, в разделе «Двоичные изображения» есть только очень длинный список имен файлов .dylib и имен файлов, начиная с/System/Library /. Что я должен делать с этим? Должен ли я генерировать файл dSYM как часть этого процесса? Не могли бы вы рассказать подробнее. Может быть, поэтапные инструкции? Благодарю. – Ash

0

На XCode 8.3.2, выберите Да на отладочнуюenter image description here