Xcode: "в исполняемом файле отсутствуют символы отладки" для повторной сборки выпуска с постобработкой развертывания

Эта проблема

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

Мне удалось воспроизвести это с помощью минимального проекта в Xcode 11.3.1, как показано ниже:

  • Файл -> Новый проект (macOS, приложение, Objective-C)
  • в настройках сборки цели:
    • установить DEPLOYMENT_POSTPROCESSING за Release к YES
  • Продукт -> Схема -> Изменить схему
    • установлен Build Configuration к Release
  • Продукт -> Сборка
  • изменить файл, который не компилируется в двоичный файл (например, изменить уведомление об авторских правах вInfo.plist
  • Продукт -> Сборка

Теперь в журнале сборки на шаге GenerateDSYMFile появляется предупреждение

warning: no debug symbols in executable (-arch x86_64)

Если полученное приложение будет запущено, отладочной информации не будет (вы не можете установить точку останова в Xcode, если вы сломаете вручную, кадры стека будут просто ___lldb_unnamed_symbol,...)

Что я узнал до сих пор

Соответствующая часть процесса сборки Xcode выглядит так:

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

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

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

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

0 ответов

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