Элементы отладки статической библиотеки iOS, не входящие в dSYM

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

Общая база кода в своем собственном проекте, которая имеет статическую библиотеку в качестве целевой. Этот проект перетаскивается в основной проект приложения. В основной целевой целевой платформе для создания фаз я добавил статическую библиотеку в качестве целевой зависимости и в Link Binary With Libraries. Проект строится и работает по желанию.

Теперь, если я создаю архив из основного проекта, я могу просмотреть этот архив в Finder и содержать файл .dSYM, который можно использовать для обозначения журналов сбоев. Однако .dSYM содержит только символы для основного приложения, а не для статической библиотеки. Чтобы переутвердить это, я запустил следующее:

dwarfdump /path/to/app.dSYM

И вывод (в основном) не содержал никаких символов из статической библиотеки. Единственное исключение, которое я обнаружил, это то, что мой основной проект AppDelegate является подклассом объекта в статической библиотеке, и есть записи для этого суперкласса в .dSYM. Однако ни один из других классов не присутствует.

В статичной библиотеке проекта Target Build Settings я установил следующее:

  • Отладка отладочных символов во время копирования: НЕТ
  • Связанный с лентой продукт: NO
  • Создание символов отладки: ДА
  • Символы, скрытые по умолчанию: НЕТ

Если кто-то может предложить некоторые рекомендации, я был бы очень признателен.

Ответ 1

Статические символы lib отображаются в файле dSYM приложения, и dwarfdump покажет это.

 dwarfdump -a path/to/app.dSYM >dsymAsText.txt

Это должно показать вам символы lib.

Однако, если вы (как я недавно) искал таблицу символов, которая должна быть сгенерирована, чтобы соответствовать только вашей статической lib, я пришел к выводу, что она будет бесполезной; как только он будет скомпилирован в новое приложение, эти символы и адреса будут меняться, и у вас будет совсем другое смещение за все (пожалуйста, кто-то поправьте меня, если я ошибаюсь).

Я не совсем уверен, что есть способ обойти эту часть.

Ответ 2

Не уверен, что вы нашли ответ, но у меня была такая же проблема пару дней назад. Я получил его для работы, выполнив следующие действия:

  • Создайте рабочее пространство для хранения основного проекта и общей базы кода (статическая библиотека). Убедитесь, что проекты являются братьями и сестрами, а не родительскими/дочерними.
  • Добавить целевую зависимость и связать общую кодовую базу
  • Обязательно включайте символы отладки в вашей общей кодовой базе
  • Настройте параметры рабочей области для создания всех проектов в общем каталоге (я считаю, что это ключ)
  • Если вы получаете жалобы о невозможности находить заголовки, вам может потребоваться изменить путь поиска заголовка пользователя в настройках сборки или использовать функцию исходного дерева.