Xcode 9.2模拟器调试中断; 无法附加到进程ID

n8t*_*8tr 9 xcode ios ios-simulator xcode9.2

iOS模拟器上的Xcode 9.2调试完全打破了我.

我花了几个小时研究这个问题并尝试了大量的建议,但没有完全擦除我的硬盘并开始安装新的操作系统.我最终向Apple提交了一个错误.如果有人遇到此问题并有任何建议,请在此处发布.

简介:
尝试使用调试可执行文件在调试模式下构建和运行时.模拟器只将应用程序打开到白色屏幕,然后Xcode弹出一个错误:

Could not attach to pid: "<a process id>"
Ensure "<app>" is not already running, and "<user>" has permission to debug it.
Run Code Online (Sandbox Code Playgroud)

重现步骤:
制作任何项目并尝试在任何模拟器上运行.

预期结果:
调试器成功附加到调试器.

实际结果:
调试器永远无法连接到iOS模拟器进程/应用程序进行调试.调试器CAN可以在物理设备上成功连接和构建并运行.

版本/构建:
- Xcode版本9.2(9C40b)
- macOS Sierra 10.12.6
- 任何iOS项目
- 任何iOS模拟器

其他说明:
- Xcode 9.2工作正常,直到这个问题随机开始.错误最初说:

 Failed to initiate service connection to simulator
 DTServiceHubClient failed to bless service hub for 
 simulator iPhone 8 Plus <simulator identifier>
Run Code Online (Sandbox Code Playgroud)

- 重新启动计算机后,错误转移到"无法连接到pid ..."

我尝试了几十种建议的解决方案,但没有完全擦除我的电脑,包括:

  • 在模拟器上重置设备内容和设置
  • 创建新设备(甚至不同的设备和操作系统组合)
  • 尝试不同的Xcode项目,甚至是简单的一次性单视图应用程序
  • 查看etc/hosts文件并验证localhost可以ping通
  • 多次重启计算机
  • 删除派生数据(多次)
  • 让它在没有附加调试器的情况下构建和运行,然后尝试通过"附加到进程ID"附加调试器
  • 完全卸载Xcode和所有模拟器,然后重新安装.
  • 删除钥匙串中的任何无效证书

在此输入图像描述

在此输入图像描述

n8t*_*8tr 6

事实证明,我们的安全软件阻止了调试器。运行sudo sysdiagnose帮助我找到一个日志条目,表明该条目已被阻止。该软件为Cb防御(Carbon Black Defense)。显然,唯一的解决方法是让您的安全团队通过哈希将其列入白名单,并且该哈希将来可能会更改。

  • 感谢您的帖子和答复。在我们的IT部门部署Carbon Black Defense之后,我尝试调试macOS应用程序时遇到了这个问题。我能够更改项目,以便它不会尝试以调试模式启动,之后再手动附加到该过程。那不允许您调试“引导程序”代码,但是总比没有好。 (2认同)

rus*_*hop 2

Xcode 9.0-9.2 中存在一个 bug,导致运行一段时间后出现此问题。如果您注销并重新登录,它应该会为您解决。