Отладочная информация DWARF и журналы сбоев

Я пытаюсь сопоставить свое понимание форматов отладочной информации «DWARF» и «DWARF с файлом dSYM» с тем, что я вижу в информации о сбоях для различных конфигураций сборки iOS.

Я пытался исправить проблему, из-за которой сбои в сборке с конфигурацией отладки по умолчанию не отображались символами. Это были мои настройки сборки до того, как проблема была исправлена ​​-

Удалить связанный продукт - Отладка - Нет, Выпуск - Да

Удаление символов отладки во время копирования - Отладка - Нет, Выпуск - Да

Формат отладочной информации - Отладка - DWARF, Выпуск - DWARF с файлом dSYM

Что заставило его работать, так это установка формата информации отладки на «DWARF с файлом dSYM» для настройки отладки.

У меня такой вопрос: зачем мне устанавливать формат «DWARF с файлом dSYM», если я указываю, что продукт не следует удалять из его символов в файл dSYM (в настройках продукта, связанного с полосой)?

Мое (вероятно, неправильное) понимание заключалось в том, что если я установлю его в DWARF, то вся отладочная информация будет внутри двоичного файла приложения, и мне не нужен отдельный файл dSym для символизации? Пожалуйста, помогите мне лучше понять это.


person Kedar    schedule 10.01.2019    source источник


Ответы (1)


На платформах Apple DWARF никогда не включается в исполняемый файл (за исключением информации о раскручивании). Включение отладочной информации DWARF просто означает, что файлы .o содержат отладочную информацию в формате DWARF. Однако компоновщик не переносит это в исполняемый файл.

Если вы запрашиваете файл dSYM, на отдельном этапе сборки используется dsymutil для сбора отладочной информации из файлов .o в пакет или файл dSYM.

Отладчики могут использовать карту в исполняемом файле для поиска отладочной информации в файлах .o, когда это необходимо, при условии, что вы отлаживаете на машине сборки. Вот почему вам обычно не нужен файл dSYM для сборки отладки. У символики нет исполняемого файла, только UUID для него. Он может найти dSYM, используя UUID, но у него нет информации для поиска файлов .o.

См. этот ответ разработчика Apple, участвовавшего в реализации этого материала. Кроме того, он написал эту старую вики-статью.

person Ken Thomases    schedule 10.01.2019
comment
Спасибо за ответ и ссылки. Я думаю, что источником путаницы для меня было то, что я думал, что продукт с привязкой к разделу «Разделить» извлекает информацию из двоичного файла и передает ее в файл dSym. Но теперь я думаю, что понимаю, что файл dSym может / создается на более ранней стадии. Фаза очистки просто удаляет информацию из исполняемого файла. - person Kedar; 10.01.2019