【问题标题】:Xcode 9.3 Playground - diagnosticdXcode 9.3 Playground - 诊断
【发布时间】:2018-09-10 12:33:48
【问题描述】:

我注意到每次在 Xcode(9.3 版)中启动 Playground 时,后台都会启动一个守护程序,并使用超过 100% 的 CPU!

我删除了 Xcode 的缓存及其 DerivedData 文件夹,但没有任何变化。

有人知道如何解决这个问题吗?

【问题讨论】:

  • 同样的问题,我已经为此提交了雷达 39085132。欢迎你来欺骗它。
  • 我看到了同样的行为。看起来像是 9E145 中引入的错误。
  • 这里有同样的问题,但不仅仅是 Playground。 Vanilla Swift 代码也是如此。
  • Xcode 9.3.1怎么样?

标签: xcode


【解决方案1】:

diagnosticd 是一个守护进程,您需要使用 launchctl 停止/终止。您最有可能需要停止的守护进程的名称中包含“SimDevice”。要获得确切的名称,请执行以下操作:

/bin/launchctl list | grep SimDevice

然后使用适当的名称(可能不止 1 个):

/bin/launchctl stop 'name'

在我的例子中,“名字”是:com.apple.CoreSimulator.SimDevice.380EFF06-B636-49CD-851E-5DB4890641AE

如果您经常使用 Playground,并且通常有超过 1 个模拟器占用您的 CPU,请改为运行此脚本:

/bin/launchctl list | grep SimDevice | awk '{print $3}' | xargs -I %s /bin/launchctl stop %s

哦,别忘了在这里向苹果提交错误报告:https://bugreport.apple.com/web/

顺便说一句,看到 Playground/diagnosticd 与您的代码斗争是一件很有趣的事情;如果您创建了一个错误或其他一些复杂的语法,cpu 就会上升。如果你清除它,cpu 会下降(只是一点点)。 Apple 是如何实现这一点的……

【讨论】:

  • 是的,我也注意到了——你的代码越复杂,你的 CPU 就越高。刚刚向 Apple 提交了错误报告。感谢 Yohst 的洞察!
  • kill后,过一段时间自动重启,不做任何操作。还是不行。
  • @JerryZhou:你是从 Activity Monitor 杀掉还是使用 launchctl?后者应该真正停止这个过程。如果您从 Activity Monitor 中将其杀死,该过程确实会重新启动。
  • @Yohst 我错了,那天我没有杀死它。顺便说一句,最近更新到macOS High Sierra 10.13.4 Update后cpu没有超过100%
  • @Yohst 我试过你的解决方案,但这完全关闭了模拟器。这是否应该作为一种解决方法发生,或者在您回答日期和现在之间发生了什么变化?
【解决方案2】:

同样的问题,我找到的唯一临时解决方案是杀死“homed”,这会导致系统充满类似

的错误
MediaRemote reply error: <error: 0x11162ed20> { count = 1, transaction: 0, voucher = 0x0, contents =
    "XPCErrorDescription" => <string: 0x11162efc8> { length = 18, contents = "Connection invalid" }
}

我想诊断,旨在自动报告错误,只是进入了超速模式。

这就是我现在所拥有的一切......

【讨论】:

    【解决方案3】:

    这是一个已知的错误,Apple 将其归因于“MediaRemote 子系统过度热情地记录”。目前没有官方解决方法。

    https://forums.developer.apple.com/message/305885

    【讨论】:

    • 我刚刚针对此问题打开了 DTS 技术支持事件(案例 ID:689578082)。
    • 该线程现在确实包含有人说 9.4 xcode beta 解决了这个问题。
    【解决方案4】:

    作为临时解决方法,我在启动 Playground 后运行此脚本以杀死恶意诊断和托管进程:

    #!/bin/bash
    kill $(ps -ef | grep Xcode.app | egrep "diagnosticd|homed" | awk '{ print $2 }')
    

    编辑:这似乎只是 iOS Playground 的问题,因此另一个(不那么激烈的)解决方法是在不需要 UIKit 组件的情况下使用 macOS Playground。

    第二次编辑:此错误似乎已在 Xcode 9.3.1 中修复(可通过 MAS 获得或从 developer.apple.com 直接下载)

    第三次编辑:9.3.1 并没有完全解决这个问题,尽管发行说明说了什么。根据我的错误报告中的 cmets,这仅在 9.4 中完全修复。

    【讨论】:

    • 它似乎可以在 Mac 10.14.4 上运行,但守护进程又启动了
    【解决方案5】:

    获取 Xcode 9.4 测试版。它解决了我的问题。

    杀死 homed 并不是一个好的解决方案,而且 Playground 无论如何都不能正常运行。

    遇到了同样的问题,没有办法解决。人们早在 4 月 8 日就提交了错误。

    最好的解决方案是从Apple Developer Page 下载 Xcode 9.4 Beta。

    这对我有用,CPU 使用率很低,Xcode 不再在 Playground 上崩溃。

    【讨论】:

      【解决方案6】:

      Xcode v 11.2.1(11B53) 也有同样的问题 似乎是更新 Mac OS 和 Xcode 后出现的问题。

      我发现 diagnosticd 与 Xcode 模拟器有关。 所以我尝试在模拟器菜单中Erase All Content and Settings...

      请参考上图。

      删除所有内容和设置后,问题已解决。 :D

      【讨论】:

      • 这太荒谬了
      • @ArthurShkil 是的。只是重启模拟器并没有解决问题所以..我尝试了擦除,终于成功了!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多