Xcode 4.3.2 и 100% CPU постоянно в режиме простоя
Мой Xcode начал вести себя очень сильно со вчерашнего дня при работе над проектом среднего размера (около 200 исходных файлов). Проект компилируется правильно и работает как в симуляторе, так и на устройстве. Я не использую сторонние библиотеки, кроме немногих широко используемых включает (например, JSON или facebook ios sdk).
Он постоянно использует CPU на полной скорости, даже если он находится в состоянии ожидания (без индексирования, компиляции и редактирования). Использование ОЗУ относительно нормально (300-50 МБ).
Моя машина использует: Core 2 Duo 3.04Ghz CPU, 8 ГБ оперативной памяти и Vertex OCZ 3 накопителя SSD.
Я пробовал каждое предлагаемое решение, найденное в stackoverflow:
- Очищенный проект
- Очищенные производные данные в организаторе
- Очищенные репозитории в организаторе
- Очищенный пакет xcodeproject из рабочего пространства и файлов пользовательских данных, как предлагается здесь: qaru.site/info/72293/... (он помогает только на мгновение и начинается снова через минуту или около того).
- Перезагруженный Xcode много раз (с тем же эффектом, что и в 4).
- Отключено "Живые проблемы"
- даже переустановленный Xcode
Ничего не помогает. В большинстве случаев Xcode мгновенно индексирует проект, а затем возвращается к нормальной производительности, но через некоторое время снова становится непригодным. Процессор возвращается к 95-100% для обоих ядер, разведыватель разведывательных данных и т.д.
Я прикрепляю скриншоты о том, как процессы Xcode видны инструментами:
![enter image description here]()
![enter image description here]()
![enter image description here]()
![enter image description here]()
![enter image description here]()
UPDATE:
После минуты надежды, что я решил проблему, перемещая несколько
#import "header.h"
из заголовков в файлы реализации и обмениваясь ими с передовыми объявлениями... проблема снова вернулась через некоторое время.
Я добавляю журнал консоли.
Странно, что журналы, связанные с Xcode, появляются после того, как я ушел, а не во время выполнения itsef.
Журналы консоли:
5/11/12 9:27:03.777 AM [0x0-0x45045].com.apple.dt.Xcode: com.apple.dt.instruments.backgroundinstruments: Already loaded
5/11/12 9:27:05.571 AM Xcode: Performance: Please update this scripting addition to supply a value for ThreadSafe for each event handler: "/Library/ScriptingAdditions/SIMBL.osax"
5/11/12 9:27:58.168 AM Xcode: ERROR: Failed to create an alert for ID "enabled" based on defaults: 1
Ответы
Ответ 1
То, что остановило мой кошмар, было:
- Изменить всегда Поиск в пути пользователя к НЕТ в настройках сборки проекта (полужирный).
- Удалить флаг -objC Другие флаги компоновщика (также выделены жирным шрифтом).
И затем удалить Derived Data и дождаться, пока Xcode не вернется.
Я не уверен, кто из них помог, потому что я изменил их оба в одно и то же время, и я так отстаю от своего графика. У меня нет времени проверять его. Я улучшу этот ответ, когда я воспроизведу ошибку и решение в свободное время.
Однако есть подсказка:
* Переосмыслить и перепроверить настройки сборки проекта/целей. *
Весьма вероятно, что это странное поведение может быть вызвано некоторой неудачной комбинацией настроек сборки.
Ответ 2
Все мои проекты делают это время от времени. Я могу закрыть X-код и запустить его снова, и он будет работать нормально, а затем вернуться к использованию 200% процессорного времени (два ядра полностью загружены).
Мое решение состоит в том, чтобы использовать AppCode в качестве моей основной IDE (имеет дополнительное преимущество - быть намного лучше IDE, но эта другая история). Я только запускаю XCode, когда мне нужно редактировать раскадровки и закрывать его, когда я закончил - обычно это препятствует проблеме.
AppCode запускает те же файлы/структуру проекта, имеет лучшую и быструю индексацию и никогда не сталкивается с этой проблемой, поэтому я не вижу, как это может быть проблемой настройки/конфигурации - это должно быть ошибкой в XCode. Следовательно, я бы не тратил время на изменение структуры кода, так как это скорее всего задержит проблему, а не исправит ее.
Ответ 3
Невозможно узнать, действительно ли у ОП была другая причина, но для меня это был сбой Xcode с git. Добавление/фиксация моих текущих изменений решила мою проблему. Вот полный сценарий и то, что я сделал, чтобы исправить это:
- Окружающая среда:
- Версия Xcode 5.1.1 (5B1008)
- Macbook Pro OS X 10.9.2
- 2 ГГц Intel Core i7, оперативная память 8 ГБ.
- Я заметил, что Xcode начал постоянно 200% моего процессора.
- Не уверен, когда это началось, но Xcode замерзает при попытке сделать снимок (400% загрузка процессора в течение нескольких минут, пока я не выйду из Xcode)
- После повторного открытия я заметил, что Xcode по-прежнему оставался на неопределенное время при использовании 200% CPU.
- Закрытие всех проектов не помогло.
- Удаление всех полученных данных и перезагрузка не помогли.
- Удаление Xcode и переустановка с первого раза пообещали, но как только я снова открыл свой основной проект, CPU вернул постоянное использование 200% CPU. (после завершения индексации)
- Закрытие проблемного проекта не помогло. Xcode теперь снова застрял на земле навсегда-убить-200% -области.
После просмотра многие люди, ссылающиеся на git, являются проблемой.
- У меня немного сложный репозиторий git (имеет репозиторий подмодулей и подпроект в основном проекте Xcode).
- У меня были ожидающие изменения как в основной репо, так и в подмодульной части репо.
- Я закрыл Xcode и git добавил и зафиксировал все мои текущие изменения.
- Reopen Xcode и VIOLA! Больше не будет убито CPU. Возвратитесь к 0.0% бездействия.
Xcode 5.1.x, по-видимому, слишком много работает с git для меня (иногда не вызывает изменений в графическом интерфейсе и т.д.), поэтому, возможно, есть ошибки Xcode git.
Ответ 4
Похоже, что он проводит свое время, анализируя ObjC, включенную в PCH.
- Сколько PCH должно clang генерировать? В вашем проекте это будет один для C, один для ObjC, один для С++, один для ObjС++ для каждого диалекта /lang, используемый в вашем проекте, и любые зависимые объекты. То есть, если у вас есть зависимая библиотека, включенная в ваш PCH приложения, и вы взламываете эту библиотеку, все смысл кода в целевой программе приложения должен быть недействительным и снова анализироваться каждый раз, когда вы изменяете заголовок, включенный вашим pch. И если ваша цель скомпилирует C файл, для нее потребуется PCH для C. Если для ObjC нужен один, то для ObjC ему нужно будет создать его.
- Как часто вы изменяете PCH (или все, что включено в него)?
- Удалить включает в себя PCH. Это не редкость видеть каждую связанную структуру, включенную в PCH (не делайте этого!).
- Если вы измените настройки сборки или препроцессора, может потребоваться полностью восстановить индекс смысла кода для цели (ов) каждый раз.
- Вы пытались отключить живые проблемы?
Ответ 5
В моих проектах (все они) это была автозаполнение /intellisense. Когда я изменил одну строку кода в своих .h файлах, он пошел на haywire, + 100% загрузка процессора (более одного ядра).
Я просто отключил его, теперь я должен думать немного больше для себя (например, я делал это в Windows), и он отлично работает при низком использовании ЦП.
Ответ 6
Я использовал эту проблему. Это вызвано git. Хотя я не знаю, что git очень хорошо. Я удалил файл с именем .git в каталоге проекта, и он стал нормальным. путь,.git скрыт.