Xcode 9:无法附加到pid

66

最近iOS应用开发工具Xcode 9-beta的重大更新中,我经常遇到一个问题。

在模拟器(iOS 11)中运行/调试应用程序时,经常会出现以下错误:

无法连接到pid:“2370”
确保<项目标题>未在运行,并且<系统用户名>有权限进行调试。

这里是同样问题的快照:

error message - Could not attach to pid

这个问题的永久解决方案是什么,因为它经常干扰我的工作?


你可以在这个问题上提bug,并附加sudo sysdiagnose -qxcrun simctl diagnose的输出吗? - russbishop
@russbishop 报告了一个错误。命令 'xcrun simctl diagnose' 无法工作。错误:未识别的子命令:diagnose。 - Krunal
你必须选择旧版本的Xcode,使用xcode-select命令。确保已经选择了Xcode 9。 - russbishop
我清理了派生数据和构建文件夹。对我来说有效。 - iOSDev
@russbishop 我也在9.4版本中遇到了这个问题,当我运行测试用例时,你能帮忙解决一下吗?谢谢。 - TheCodeTalker
请查看此链接 https://dev59.com/-lcP5IYBdhLWcg3wRX9h#57848546 - Jayprakash Dubey
22个回答

46

如果问题出现在 OS Mojave 上, 而你正在尝试使用旧版本的Xcode(低于10.0)来运行测试, 确保在方案中选择测试时, 调试可执行文件是被禁用的

输入图片描述

从这一点上开始,您将无法调试测试


6
可以这样做,但是你就无法调试你的测试了 :( - electronix384128
难以置信!谢谢! - Camilo Aguilar
当我在Catalina上运行Xcode 12.1的UI测试时遇到“附加失败”错误时,这个修复方法也适用于我。 - Angela
我已经重新启用了调试可执行文件,错误没有再次出现,我可以调试我的测试。因此可能只需要关闭并重新打开它。 - Angela

23

虽然不是永久解决方案,但由于其他方法对我无效,我不得不退出并重新启动Xcode。


该死.. 只是一次重启 :S - Juan Saravia

16

以下对我有用:

编辑Scheme -> 信息 -> 可执行文件 -> 在启动时询问

感谢@nastya-gorban在这里的回答。

更新

在苹果的错误报告中,经过相当长时间的示例测试,他们基本上认为使用手动证书不是“预期”的问题。

简单来说,如果您没有企业账户,因此没有多个开发人员在同一个账户上,那么您可以使用自动签名,并且不应该遇到此问题。

如果您拥有具有多个用户的企业帐户(我发现它会破坏自动签名),这是他们的建议:

 

我们建议您在调试版本中使用自动签名,在发布版本中使用手动签名。


我已经在Bug报告器上发布了这个问题,但仍在交换信息以找出原因。 - Efren
1
根据苹果公司的说法: 使用 ad-hoc 分发配置文件无法进行调试。分发配置文件不允许调试...我们假设您正在使用手动签名。如果您选择了分发签名证书,则无法选择开发配置文件。开发配置文件不包含分发签名证书。因此,如果您想要调试,您需要选择开发签名证书和开发配置文件。顺便说一句,这就是自动签名为您完成的所有繁琐操作。 - Efren
工程师已经根据以下信息确定此问题的行为符合预期:是的,根据我们所讨论的操作系统不同,调试进程的规则也会更加严格。在启动时询问也可能会找到应用程序的不同副本,因此,即使在较新的iOS版本中,如果它获取了分发签名的副本,则可能有一种方法可以通过“启动时询问”来运行某些内容。我们建议您对调试构建使用自动签名,并对分发构建使用手动签名。 - Efren
11.3 对我有用 - Zeeshan

11

关闭模拟器,然后从 Xcode 重新运行它。


我尝试了所有这些解决方案,但它只是暂时解决了错误。我可以有一个永久性的解决方案吗? - Krunal

8

我也遇到过这个问题。似乎同时安装两个Xcode版本存在问题。(9.4.1和10.0 Beta)

使用Beta版可以正常运行,但是稳定版无法正常工作。所有工具都设置为Xcode 9.4.1稳定版的工具。只能使用Beta版本运行单元测试。

删除Beta版后,稳定版可以正常工作。


3
听起来这跟我的问题很像。我安装了Xcode 10并升级到Mojave。然后我又不得不再使用Xcode 9.4,它就开始出现这种问题。我会尝试卸载Xcode 10并看看是否有所帮助。 - jowie

7

即使在 Xcode 11.1/2/3 上也可能出现授权问题,这是模拟器没有必要权限时引起的问题。

尝试在终端中执行以下命令:

sudo DevToolsSecurity -enable

或者

sudo /usr/sbin/DevToolsSecurity -enable

详细信息可以在这里找到。


7

删除派生数据并清理项目,等待处理完成,这可能需要一些时间。目的是要给一些处理时间。之后运行良好。


我尝试了那个解决方案,但它只是暂时解决了错误。我能有一个永久的解决方案吗? - Krunal

7

我已经处理这个问题好几天了。 我能够进行构建,但无法在模拟器上启动,而且我收到相同的“pid:..”错误消息。

我使用的是: - Xcode v9.2 - Swift 3.2 - 构建iOS

我尝试过但没有成功的方法:

重新启动计算机;删除模拟器内容和设置(我没有“重置”);卸载并重新安装Xcode;更改“部署目标”;在模拟器的 “硬件->管理设备”中更改设备;删除派生数据、清理和构建或只等待......直到永远。

可行的方法如@Rajasekhar所提到的:

  • 检查钥匙串证书。
  • 通过右键单击删除现有证书(它们已经过期)
  • 并在Targets->General中取消选中“自动管理签名”

此后,它在模拟器中成功启动。我不知道问题是否会再次出现,但希望这样做有效。


1
请勿将“谢谢”作为答案。一旦您拥有足够的 声望,您就可以投票赞扬您发现有用的问题和答案。-【来自审核】 - Gilles Gouaillardet
1
我包含了一个额外的步骤,以及如何删除证书的说明。这个步骤在上面没有提到,但是另一个用户提出了这个问题。 - tameikal

5

我不想再增加更多噪音,但对我来说,答案是使用sudo

通常情况下运行,Xcode 9.4.1 (9F2000) 和 Xcode 10.0 beta 4 (10L213o) 都经过多次尝试后无法连接到我的应用程序,并给出了原帖中引用的错误信息。

有效的方法是使用sudo运行Xcode(9.4)。

sudo /Applications/Xcode.app/Contents/MacOS/Xcode

我不明白为什么需要使用sudo。我正在连接的Cocoa应用程序是在Xcode 9.4.1中构建的Debug版本,然后将其拖入/Applications中。该应用程序没有经过代码签名。 .appContentsMacOS和可执行文件的Posix权限均为八进制755。所有权者是我。如果我将其保留在Build文件夹中,并以正常方式构建和调试,则可以正常工作。

问题显然出现在lldb上。我还尝试在命令行中使用lldb(lldb-902.0.79.7),但结果相同。只有使用sudo才能正常工作。没有sudo

error: attach failed: unable to attach

这看起来是一个可靠的解决方案,所以我对它寄予了很高的期望!可惜它没有奏效。不过,我安装了两个版本的Xcode。我将尝试删除其中一个。 - jowie

5

我遇到了同样的问题。请查看截图。

Screenshot added

以下是几个可能有效的解决方案:
  1. 重新运行项目
  2. 清理(快捷键:cmd + shift + K)并重新运行项目
  3. 退出Xcode和模拟器。重新打开项目并再次运行
  4. 重置模拟器内容(选择模拟器 -> 转到硬件选项卡 -> 擦除所有内容和设置...),然后重新运行项目。

Screenshot added

方案4对我有用。


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