Xcode: «нет символов отладки в исполняемом файле» для повторной сборки выпуска с постобработкой развертывания - PullRequest
0 голосов
/ 03 марта 2020

Проблема

Когда я неоднократно собираю релиз в 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 выглядит так:

  1. Связывание объектных файлов для формирования двоичный файл (только если хотя бы один из них изменился)
  2. Создание файла dSYM из двоичного файла (если что-либо в выходных данных изменилось) выходные данные изменились)

Итак, 1) пропускается при повторной сборке, поскольку источники (и, следовательно, объектные файлы) не изменились. 2) выполняется, потому что Info.plist изменился, но он работает с двоичным файлом, который уже был удален предыдущей сборкой. Следовательно, dSYM является пустым.

Похоже, 2) должен быть перезапущен только при тех же условиях, что и 1), но эти зависимости, кажется, зашиты в Xcode ...

Есть ли способ обойти эту проблему?

...