Недавно я представил второе целевое приложение в своем проекте Xcode и разделил большую часть моей кодовой базы на фреймворки. Сначала все работало нормально, но когда я создал больше фреймворков, мой отладчик перестал работать. Мой проект невероятно большой с множеством компонентов, которые я хотел бы импортировать в одни целевые приложения, но не в другие.
Когда приложение останавливается в точке останова, я получаю следующий вывод консоли:
The REPL and expressions are unavailable.
Shared Swift state for <AppName> could not be initialized.
Точки останова работают большую часть времени, но иногда происходит сбой всего отладчика, что приводит к следующему выводу:
Message from debugger: The LLDB RPC server has crashed. The crash log is located in ~/Library/Logs/DiagnosticReports and has a prefix 'lldb-rpc-server'. Please file a bug and attach the most recent crash log.
Платформы: OSX 10.14.3, Xcode 10.1, iOS SDK 9.0
Общее количество целей в проекте: ~250
Цели приложений: 2
Фреймворки: 117
Тесты: 127
Попытки исправления:
@Qix Обновил мою кодовую базу для Xcode 10.2.1, и отладчик снова работает. Мне удалось воспроизвести эту проблему в марте, создав проект с десятками внутренних фреймворков. После обновления Xcode этот проект, похоже, тоже работает.
Итак, я узнал, в чем заключалась моя проблема: это было связано с переполнением стека из-за рекурсивного вызова, который никогда не нарушал кодовый путь. Я закинул свой проект в докер-контейнер и запустил его с помощью gdb, который поймал переполнение стека и показал мне проблему.





Похоже на ошибку в LLDB, я тоже это вижу. Не уверен, что происходит.