XCode не может найти символы для конкретного проекта библиотеки / фреймворка iOS

У меня проблема с точками останова в исходном коде конкретной библиотеки / фреймворка (новичок в Xcode - я не уверен, каков правильный термин) в довольно большом проекте iOS. У меня есть весь код для этой библиотеки. Точки останова работают нормально везде, но в этой конкретной библиотеке все точки останова игнорируются.

Я могу поместить точку останова в функцию, вызываемую из одного из этих исходных файлов, и она сработает, но затем стек вызовов показывает "__lldb_unnamed_function" для местоположения в интересующем меня файле, как если бы символы были удалены.

У меня есть следующие настройки для рассматриваемой библиотеки

Generate Debug Symbols = YES
Strip Debug Symbols During Copy = NO
Strip Linked Product = NO
Dead Code Stripping = NO 

Я использовал много #ifdefs для тестирования альтернативных реализаций нескольких функций, поэтому я подумал, что некоторые вещи могут быть случайно помечены как мертвый код (отсюда и последняя настройка). Я уже пытался очистить / восстановить. Я попытался полностью удалить приложение из целевого iPhone. Я попытался удалить промежуточную папку

/Library/Developer/Xcode/DerivedData

Код определенно выполняется, потому что все мои вызовы NSLog отображаются правильно.

У меня нет большого опыта работы с XCode, так что я надеюсь, что мне не хватает чего-то простого

Спасибо

1 ответ

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

Единственный хороший способ выяснить, кто это делает, - это просмотреть полный журнал сборки в XCode, развернуть каждый из этапов и пройтись по всем этапам сборки, чтобы выяснить, кто это делает. Вы расширяете этапы, наводя курсор на каждую линию сборки в RHS, и вы получаете пометку раскрытия, которая выглядит как куча строк на странице; нажмите, чтобы увидеть реальные команды.

Еще один способ уловить это может заключаться в том, чтобы создать dSYM для этой платформы (установив формат отладки на "DWARF + dSYM".) Это должно быть сделано до того, как что-либо будет удалено, поэтому, если тот, кто удаляет это, оказывается очень умным, это должно сохранить отладочная информация.

Другие вопросы по тегам