Налагоджувач Xcode 11 надзвичайно повільний - відома проблема?


95

Оскільки я оновився до останньої версії Xcode 11.0 (11A420a), налагодження відбувається надзвичайно повільно та громіздко.

РЕДАКТУВАТИ: Після оновлення до 11.1 GM (11A1027) проблема залишається незмінною.

Скласти проект і запустити його в симуляторі або на пристрої не становить проблем. Однак при досягненні точки зупинку Xcode стає більш-менш непридатним для використання:

  • Виконання програми зупиняється негайно при досягненні точки зупинку. Однак Xcode потрібно до 30 секунд, щоб показати позицію у вікні коду, і ще близько хвилини, щоб завантажити вміст подання змінної (що відображає значення та стани змінних, доступних у точці зупинки).
  • Якщо я використовую функції « Крок у» або « Перехід через», це займає до хвилини, щоб виконати наступний крок, і знову ще хвилину, щоб завантажити змінні.

Я запускаю Xcode на Mac mini 2018 з i7 та 32 Гб оперативної пам'яті на частоті 3,2 ГГц. Я раніше без проблем використовував Xcode 10 на тій же машині.


Звичайно, пошук "Xcode slow" призводить до тонни потоків та можливих рішень. З моїх років роботи розробником iOS я знаю, що Xcode ніколи не був найшвидшою та стабільною програмою. Однак ніколи не було так погано, як зараз.

На жаль, жоден з відомих прийомів (перезапуск Xcode або Mac, очищення проекту, очищення папок бібліотеки Xcode тощо) не мав ефекту,

Тож велике питання:

Це відома проблема в Xcode 11? Чи є відомі рішення?


Для початківців останньою стабільною версією Xcode є 11A1027, а не 11A420a. Я б почав з оновлення.
Рафаель Франциско

2
Mmh, 11A420a - це остання версія, доступна в App Store
Андрій

2
Зараз я оновився до 11A420a, і проблема залишається незмінною.
Андрей

2
Я спробував 11.1 (11A1027) - те саме
nikans

3
Одне, що ви могли б зробити, - це подати звіт про помилку в Apple. Це те, що я зазвичай роблю. Зрештою вони відповідають. Зазвичай вони запитують інформацію про систему і вимагають запуску діагностики. Загалом, Xcode працює повільно, і я не впевнений, що Apple знає, як це виправити. Я працюю на 10-ядерному iMac Pro, а Xcode все ще працює повільно.
Mobile Ben

Відповіді:


26

Ну, у мене була та сама проблема, і нещодавно з'ясував, що я просто забув відключити діагностику для своєї схеми

введіть тут опис зображення

Відкрийте конфігурації запуску -> Керування схемами -> Редагувати схему -> Виконати -> вкладка Діагностика


7
Дякую за відповідь. Через прихильність, я припускаю, що це вирішило проблему для деяких користувачів. Однак у моєму випадку це нічого не змінило, як ніколи раніше. Тож, хоча це може допомогти в деяких випадках, на жаль, це не загальне рішення
Андрій

Андрій. Чи могли б ви навести кількісні показники, що означає "повільніше"? Чи знаєте ви, що побудова змішаних проектів Swift та Objective-C, як правило, відбувається повільніше?
Геннадій Рябкін

2
Ну, я думаю, це все у питанні ... Перш за все це не має нічого спільного з часом побудови. Як писалося раніше: "Скласти проект і запустити його в симуляторі або на пристрої не становить жодної проблеми. Однак при досягненні точки зупинки Xcode стає більш-менш непридатним для використання"
Андрій

Класний Андрій, але моя відповідь про налагоджувач. На сторінці діагностики відображаються налаштування налагоджувача. І нічого про час побудови немає. Зокрема, частина про управління та розподіл пам'яті. Просто перевірте назву вашої схеми та конфігурації.
Геннадій Рябкін

Андрій, я не думаю, що ти встановив власний LLDB поверх Xcode 11, що означає найновішу ОС-X. Це щось специфічне для вашого оточення. Я б рекомендував ще раз перевірити всі налаштування схеми.
Геннадій Рябкін

1

Я бачив деякі покращення продуктивності під час використання поведінки компіляції Whole vs Incremental. Крім того, робота на Mojave та Catalina повинна мати проблеми з продуктивністю. Зокрема, оскільки попередній перегляд Canvas та інші нові функції вимагають більшої інтенсивності процесора, ніж остання версія Xcode, я б очікував, що продуктивність Mojave буде нижчою при використанні Xcode 11 (оскільки вона не оптимізована для цієї версії ОС). Оскільки Каталіна перебуває в бета-версії, я також мав би побачити додаткові проблеми. Я не вжив конкретних заходів, крім очного тесту. Початкова робота на цілій компіляції повільна, але, здається, після цього покращується.

Швидка довідка говорить:

Резюме

Цей параметр контролює спосіб перебудови файлів Swift у модулі. * Додатково : Відновлюйте лише вихідні файли Swift у модулі, які застаріли, запускаючи кілька процесів компілятора за необхідності. * Цілий модуль : Завжди відновлюйте всі вихідні файли Swift у модулі за один процес компіляції. Декларація

Тип значення SWIFT_COMPILATION_MODE

Перерахування (рядок)


4
Час компіляції - це нормально, використовуючи точки зупинки, хоча телепортується xcode десь близько до горизонту подій найближчої чорної діри.
nikans

2
Навіть якщо відповідь не вирішує проблему, описану у питанні, можна помітити, що автор доклав зусиль. Тож це не повинно бути причиною масових голосів проти, чи не так?
Андрій

Інкремент - це фактично рекомендований параметр у збірках налагодження зараз (див. WWDC talk developer.apple.com/videos/play/wwdc2018/408 ). Можливо, це залежить від проекту до проекту, але у нас чиста збірка була трохи повільнішою (5 с), ніж збірка цілого модуля, але приблизно на 40% (30 с) швидше для покрокової збірки.
Mike Bryant,

@nikans час компіляції все ще повільний у порівнянні з будь-якою іншою IDE та іншими мовами. Але я повинен визнати найгірше - це налагоджувач.
firetrap

1

Будь ласка, спробуйте зняти прапорець: Паралелізувати побудову для кожної цілі в редагуванні схеми . Це заощадить час на побудову, якщо ваш проект має багато цілей.

Редагувати схему:

введіть тут опис зображення


0

Ви пробували запустити Xcode у безпечному режимі? Це не ідеально, але лише так я міг змусити його ефективно працювати. Тобто до останнього оновлення Catalina, де мій пристрій більше не виявляється в безпечному режимі. Отже, я повернувся до першого питання.


Виявляється, це моє антивірусне програмне забезпечення сповільнює роботу. Вимкнення його вирішило проблему.
Діно

@beefon Я вважаю, що Діно мав на увазі безпечний режим MacOs. Детальніше про це можна прочитати тут: support.apple.com/en-us/HT201262
Бартош Кунат,

0

Я виявив однакові проблеми у двох різних випадках:

1) додаток не запускається Xcode, тобто прапорець "Чекати запуску виконуваного файлу" встановлюється всередині інформаційної панелі налаштувань запуску схеми;

2) у налаштуваннях схеми вибрано параметр "Запуск через фонову подію вибору" (але це не за замовчуванням)

Позиція опції Xcode

Xcode 11.2.1 (11B500)


0

У моєму випадку (XCode 11.x, MacOS 10.15.2) я виявив, що надзвичайна повільність налагоджувача спрацьовує лише в тому випадку, якщо я виконую один крок, поки триває інша одноетапна операція , тобто я натискаю кнопку кроку занадто швидко. Моє поточне рішення - уникати цього.

Чиста спекуляція, але, можливо, це викликано XCode / LLDB, яка намагається одночасно обслуговувати кілька точок зупинки? Спробуйте видалити всі точки зупинки, крім однієї, і перевірте, чи це допомагає.

На випадок, якщо це актуально: я здебільшого працюю з C ++ в XCode, з невеликим Obj-C тут і там. Зараз я взагалі не використовую Swift.


0

Я маю справу з цим вічно і нарешті зрозумів це. Це були ці рядки у моєму файлі ~ / .lldbinit:

break set -F '-[UIView layoutIfNeeded]' -c '!(BOOL)[NSThread isMainThread]' -L objc
break set -F '-[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded]' -c '!(BOOL)[NSThread isMainThread]' -L objc

Я прокоментував ці рядки, і тепер це майже так само швидко, як і без налагоджувача!


-2

У мене було встановлено 238 невикористаних точок зупинки. Коли я їх видалив, це знову швидко (навіть із увімкненою діагностикою).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.