Подтвердить что ты не робот

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 hereenter image description hereenter image description hereenter image description hereenter 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
4b9b3361

Ответ 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 скрыт.