Проблема
Когда я неоднократно собираю релиз в XCode, полученный dSYM полностью пуст, и поэтому отладчик не может ничего показать.
Я смог воспроизвести это с минимальный проект следующим образом в Xcode 11.3.1 :
- Файл -> Новый проект (macOS, App, Objective- C)
- в Настройки сборки цели :
- установить
DEPLOYMENT_POSTPROCESSING
для Release
на YES
- Продукт -> Схема -> Редактировать схему
- установить
Build Configuration
в Release
- Product -> Build
- изменить файл, который не компилируется в двоичный файл (например, изменить Авторские права уведомление в
Info.plist
- Продукт -> Сборка
Теперь в журнале сборки в шаге GenerateDSYMFile * есть предупреждение 1043 *
warning: no debug symbols in executable (-arch x86_64)
Если полученное приложение будет запущено, отладочной информации не будет (вы не можете установить точку останова в XCode, если вы разбиваете вручную, кадры стека будут просто ___lldb_unnamed_symbol
, ...)
То, что я обнаружил до сих пор
Соответствующая часть процесса сборки Xcode выглядит так:
- Связывание объектных файлов для формирования двоичный файл (только если хотя бы один из них изменился)
- Создание файла dSYM из двоичного файла (если что-либо в выходных данных изменилось) выходные данные изменились)
Итак, 1) пропускается при повторной сборке, поскольку источники (и, следовательно, объектные файлы) не изменились. 2) выполняется, потому что Info.plist
изменился, но он работает с двоичным файлом, который уже был удален предыдущей сборкой. Следовательно, dSYM является пустым.
Похоже, 2) должен быть перезапущен только при тех же условиях, что и 1), но эти зависимости, кажется, зашиты в Xcode ...
Есть ли способ обойти эту проблему?