Xcode 14在调试模式下无法连接模拟器

9
在调试任何iOS应用程序时,Xcode可以成功构建和运行,并启动模拟器,但无法从Xcode 14附加调试器到模拟器iOS应用程序。
它会在Xcode中抛出一个错误:

enter image description here

Xcode控制台显示:

无法附加到pid:“75997” Domain: IDEDebugSessionErrorDomain Code: 3 失败原因:附加失败(不允许附加到进程。当附加失败时,请查看控制台消息(Console.app)中的debugserver条目。拒绝附加权限的子系统可能已记录有关其被拒绝的原因的信息。)用户信息:{ DVTRadarComponentKey = 855031; IDERunOperationFailingWorker = DBGLLDBLauncher; RawUnderlyingErrorMessage = “attach failed (Not allowed to attach to process. Look in the console messages (Console.app), near the debugserver entries, when the attach failed. The subsystem that denied the attach permission will likely have logged an informative message about why it was denied.)”; }

尝试重新安装Xcode和命令行工具,但问题仍然存在。

步骤:

  • 使用Debug可执行文件构建和运行应用程序
  • 启动模拟器
  • Xcode出现错误并与模拟器断开连接

是否有可能被其他应用程序阻止,如果是,如何识别?

4个回答

4
来到这里分享我的(奇怪的)解决方案,如果有人遇到相同的问题而没有任何有效答案。在我的情况下,这个或其他类似问题的SO答案都没有起作用(清理、重建项目、更新、清除派生数据等)。
我的设置是:
Macbook M1 2022 + Xcode Version 14.2 (14C18)
这个Xcode版本无法连接到我不同模拟器上的任何应用程序(新的或之前开发的),这些模拟器具有iOS版本13.7-16.2。
编辑方案的解决方案也不起作用,所以最终我将方案保留为:
构建配置:发布 调试可执行文件取消选择(!) 自动启动

edit scheme window

魔法般地,在Xcode中调试应用程序开始工作,即使它是已发布版本且未选择调试选项。再次选择调试可执行文件会使Xcode无法附加到应用程序进程。
只是为了澄清:上述步骤实际上使应用程序以DEBUG模式运行 - Xcode会附加到pid,我可以进行控制台日志和断点。这个Xcode版本的行为与选项相反。

scheme_with_console_logs


在这种情况下,您的应用程序未在调试模式下运行,这意味着您无法设置任何断点或控制台日志。 - Mrunal
@Mrunal 不是,相反的 - 使用上述方案配置应用程序是可调试的,我可以进行控制台日志记录和断点,Xcode 附加到它的 PID,这就是我分享此答案的原因。请查看添加了方案配置和后台打印的控制台日志的截图。 - deevee
是的。我可以确认。出于某种奇怪的原因,它按照描述的方式工作。我的开发环境:M1 Xcode 14,Ventura。 - Ozx
我的机器是基于英特尔的,对于其他项目它都能正常工作,但对于我最大的一个项目却出现了问题。 - Mrunal

2

我通过以下步骤解决了问题:

解决方法1:

  1. 编辑方案
  2. 选择运行
  3. 选择“调试”构建配置
  4. 选择“等待可执行文件启动”
  5. 关闭
  6. 运行应用程序

在此处查看截图

再次运行应用程序时,您将收到错误消息。 关闭应用程序。 再次编辑方案并将“等待可执行文件启动”更改为“自动”。

现在您的模拟器将按预期工作。

解决方法2:

删除Derived Data中的应用程序文件夹 /Users/[your username]/Library/Developer/Xcode/DerivedData/ 搜索您的应用程序名称文件夹并将其删除。

解决方法3:

打开终端并运行:

sudo DevToolsSecurity -enable

这个命令可以启用开发者模式。运行命令后,您将收到以下消息:[已启用开发者模式]。

3
我完成了所有这些步骤,但在更新我的Xcode 14 至14.1 (14B47b)之后,我的模拟器也开始出现卡顿的情况。问题如下: 当我第一次在模拟器上运行我的应用程序时, 当我尝试通过单击CMD + R或单击Xcode停止按钮重新安装应用程序时,似乎Xcode未发送停止调试任务的命令到模拟器并关闭该应用程序。 因此,应用程序会被困在模拟器中。在我的Mac Pro M1上,唯一解决此问题的方法是每次安装应用程序时关闭/重启模拟器。 - Wilson
2
嗨@SigitHardianto,我把我的Xcode更新到14.2(14C18),但是我仍然遇到同样的问题。 - Wilson
1
@Wilson 没错。问题仍然存在。有人找到解决方案了吗? - if-else-switch
1
我也遇到了同样的问题- XCode 14.2,OSX Ventura。我尝试了以上所有建议,但没有任何作用。对于一个小一些的不同项目,它可以正常工作,但对于我的最大(也是最重要的)项目,它每次都失败。这是最近才出现的问题,只在最新的OSX更新(13.3)之后才开始发生。 - Wyllys
我打开了一张苹果技术支持工单,现在正在等待回复。 - Wilson
显示剩余3条评论

1
有时候,当你尝试在一个构建过程已经开始后快速构建时会出现这种情况。
首先,退出当前的模拟器,删除派生数据并清除项目,等待整个处理过程完成。然后,如果需要进行一些更改/编辑(因为我们清除了所有数据),尝试在不同的模拟器上运行。
检查钥匙串访问中的证书,如果发现任何不受信任的证书,请将其删除。
此外,如果您正在使用测试版,请确保它是从苹果官方网站下载的。

谢谢您的建议,但对我来说没有帮助。我仍然面临同样的问题。 - Mrunal

0

机器上没有安装任何安全软件,因此阻止了模拟器的附加。

为了获取更多信息,当我们收到警报时,应该在Console.app中检查模拟器应用程序的进程ID以及注意问题/错误。

卸载该应用程序后,该问题已得到解决,并且能够通过调试模式附加应用程序。


它是什么安全软件? - akshay1188
https://www.g2.com/products/fireeye-endpoint-security/reviews - Mrunal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接