Xcode 9.3 Игровая площадка - diagnosticd
Я заметил, что каждый раз, когда я запускаю Playground в Xcode (версия 9.3), демон запускается в фоновом режиме и использует более 100% моего процессора!
Я удалил кеш Xcode и папку DerivedData, но никаких изменений.
Кто-нибудь знает, как решить эту проблему?
Ответы
Ответ 1
diagnosticd - это демон, который нужно остановить/убить с помощью launchctl. Демон, который, скорее всего, нужно остановить, имеет название "SimDevice". Чтобы получить точное название, выполните следующие действия:
/bin/launchctl list | grep SimDevice
Затем с соответствующим именем (может быть больше 1) выполните:
/bin/launchctl stop 'name'
В моем случае "имя" было: com.apple.CoreSimulator.SimDevice.380EFF06-B636-49CD-851E-5DB4890641AE
Если вы используете Playground много, и у вас обычно есть более одного симулятора, в котором ваш процессор запускает этот скрипт:
/bin/launchctl list | grep SimDevice | awk '{print $3}' | xargs -I %s /bin/launchctl stop %s
О, и не забудьте написать отчет об ошибке с яблоком здесь: https://bugreport.apple.com/web/
Btw, его любопытное развлечение, чтобы увидеть playground/diagnostd борьбу с вашим кодом; если вы создадите ошибку или какой-нибудь другой сложный синтаксис, CPU начнет расти. Если вы очистите его, процессор упадет (немного). Почти весело, как Apple внедрила это...
Ответ 2
Как временный обходной путь, я запускаю этот скрипт после запуска игровой площадки, чтобы убить мошенники diagnosticd и homed процессы:
#!/bin/bash
kill $(ps -ef | grep Xcode.app | egrep "diagnosticd|homed" | awk '{ print $2 }')
Редактирование: похоже, проблема связана только с игровыми площадками iOS, поэтому другим (менее радикальным) решением является использование игровых площадок macOS для тех случаев, когда компоненты UIKit не нужны.
2nd Edit: эта ошибка, как представляется, исправлена в Xcode 9.3.1 (доступна через MAS или прямое скачивание с сайта developer.apple.com)
3rd Edit: 9.3.1 не полностью исправляет это, несмотря на то, что говорится в примечаниях к выпуску. Согласно комментариям в моем отчете об ошибке, это будет полностью зафиксировано в 9.4.
Ответ 3
Получите Xcode 9.4 Beta. Он разрешил мою проблему.
убийство homed не является хорошим решением, и игровая площадка не действует правильно в любом случае.
Имел такой же вопрос, и вокруг не было никакого способа. Люди подали ошибки еще 8 апреля.
Лучшее решение - загрузить Xcode 9.4 Beta с веб- страницы разработчика.
Это работало для меня, а использование ЦП низкое, а Xcode больше не падает на игровые площадки.
Ответ 4
Такая же проблема здесь, единственное временное решение, которое я нашел, это убить "homed", который наводнил систему на ошибки, такие как
MediaRemote reply error: <error: 0x11162ed20> { count = 1, transaction: 0, voucher = 0x0, contents =
"XPCErrorDescription" => <string: 0x11162efc8> { length = 18, contents = "Connection invalid" }
}
Я полагаю, что diagnostd, предназначенный для автоматического уведомления об ошибках, просто перешел в режим перегрузки.
Это все, что у меня есть на данный момент...
Ответ 5
Это известная ошибка, отнесенная Apple к "чрезмерно энтузиазму регистрации подсистемой MediaRemote". В настоящее время нет официального обходного пути.
См. Https://forums.developer.apple.com/message/305885.