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.