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 выглядит так:
- Связывание объектных файлов для формирования двоичного файла (только если хотя бы один из них изменился)
- Сгенерировать файл dSYM из двоичного файла (если что-то изменилось в выводе)
- Удаление двоичного файла, то есть удаление символов отладки (если что-то в выводе изменилось)
Итак, 1) пропускается при повторной сборке, потому что источники (и, следовательно, объектные файлы) не изменились. 2) выполняется, посколькуInfo.plist
был изменен, но он работает с двоичным файлом, который уже был удален предыдущей сборкой. Следовательно, dSYM пуст.
Похоже, что 2) следует запускать повторно только при тех же условиях, что и 1), но эти зависимости кажутся жестко закрепленными в Xcode...
Есть ли способ обойти эту проблему?