【问题标题】:Xcode 9: Could not attach to pidXcode 9:无法附加到 pid
【发布时间】:2017-11-22 21:04:16
【问题描述】:

iOS 应用程序开发工具的最新主要版本 - Xcode 9-beta 让我(经常)遇到一个问题。

在模拟器 (iOS 11) 中运行/调试应用程序时,它经常向我显示以下错误。

无法附加到 pid:“2370”
确保项目标题>尚未运行,并且系统用户名>有权调试它。

这是同一问题的快照:

什么是这个问题的永久解决方案,因为它经常令人不安?

【问题讨论】:

  • 你能提交一个错误并附上sudo sysdiagnose -qxcrun simctl diagnose的输出吗?
  • @russbishop 报告了一个错误。命令“xcrun simctl 诊断”不起作用。错误:无法识别的子命令:诊断
  • 您必须使用xcode-select 选择旧版本的 Xcode。确保选择了 Xcode 9。
  • 我清理了派生数据并清理了构建文件夹。它对我有用。
  • @russbishop 我也在 9.4 中运行测试用例时如何解决它,请帮忙

标签: ios xcode xcode9


【解决方案1】:

我尝试了以上所有答案。唯一对我有用的是更改内部版本号。

【讨论】:

    【解决方案2】:

    即使在 Xcode 11.1/2/3 上

    这是模拟器的授权问题, 当模拟器没有必要的访问权限时。它提出了问题。

    尝试在终端中关注

    sudo DevToolsSecurity -enable

    sudo /usr/sbin/DevToolsSecurity -enable

    详情可见here

    【讨论】:

      【解决方案3】:

      首先,通过 sim 完全关闭应用程序(不是睡眠 - 完全关闭应用程序) 如果还不能正常工作:重启整个 PC,确保重启后只有 1 个模拟器处于活动状态。

      如果有问题,超过 1 个 sim 卡可能会混淆它。

      【讨论】:

        【解决方案4】:

        这是授权问题。在终端中试试这个:

        sudo DevToolsSecurity -enable

        【讨论】:

          【解决方案5】:

          我有同样的问题。检查屏幕截图。

          以下是一些应该可行的解决方案:

          1. 重新运行项目
          2. 清理(快捷键:cmd + shift + K)并重新运行项目
          3. 退出 Xcode 和模拟器。打开项目并再次运行
          4. 重置模拟器的内容(选择模拟器 -> 转到硬件选项卡 -> 擦除所有内容和设置...)并重新运行项目。

          解决方案 4 对我有用。

          【讨论】:

            【解决方案6】:

            从所有其他答案中,我意识到这不是单一解决方案的问题。所以,这对我有用:

            1) 重启机器

            2) 第一次运行总是对我有用。唯一能帮助我在第一次运行后避免此错误的方法是从 XCode 中停止应用程序,而不是单击“运行”按钮重新运行应用程序。

            另一件事,当我锁定我的计算机时,问题有时会再次出现(可能是我忘记停止应用程序时)。所以我必须重新启动我的机器。

            【讨论】:

              【解决方案7】:

              就我而言,唯一有效的方法是在工作区设置中从“新构建系统”切换回“旧版构建系统”。无赖。

              【讨论】:

                【解决方案8】:

                在进行了一些挖掘之后,这在 Xcode 10.3 上对我有用。

                sudo /usr/sbin/DevToolsSecurity -enable

                【讨论】:

                  【解决方案9】:

                  我在 Xcode 10.2 中看到了这一点,我的原因是 lldb-rpc-server 崩溃了。我通过确保在调试选项中启用 Address Sanitizer 或 Thread Sanitizer 来解决这个问题。我还提交了错误报告viewable on Open Radar

                  【讨论】:

                    【解决方案10】:

                    仍然不是永久解决方案,但我不得不退出并重新启动 Xcode,因为其他解决方案对我不起作用。

                    【讨论】:

                    • 该死.. 只是重新启动:S
                    【解决方案11】:

                    在我的情况下(Xcode 10.1),这是控制台中的错误:

                    kernel  macOSTaskPolicy: (com.apple.debugserver) may not get the taskport of (bin) (pid: 10132): (bin) is hardened, (bin) doesn't have get-task-allow, (com.apple.debugserver) is a declared debugger
                    

                    所以解决方案是禁用强化运行时,清理构建文件夹并再次运行。

                    【讨论】:

                      【解决方案12】:

                      如果问题出在 OS Mojave 上并且您正在尝试像我一样在 旧 Xcode 版本(低于 10.0)上运行测试,确保在您的方案中,当您选择测试时,调试可执行文件被禁用

                      此时您将无法调试测试

                      【讨论】:

                      • 这行得通,但是你不能再调试你的测试了:(
                      • 难以置信!谢谢!
                      • 当我在 Catalina 上的 Xcode 12.1 上运行 UI 测试时遇到“附加失败”错误时,此修复也适用于我。
                      • 我已经重新打开了调试可执行文件,并且错误没有出现,我可以调试我的测试。所以也许它只需要关闭然后再打开。
                      【解决方案13】:

                      这对我有用:

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

                      感谢@nastya-gorban 的回答here

                      更新

                      在 Apple 错误报告示例上花费了相当长的时间后,他们基本上忽略了这个问题,因为使用手动证书不是“预期的”。

                      长话短说,如果您没有企业帐户,因此同一帐户上有多个开发人员,您应该可以使用自动签名,并且应该没看到问题。

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

                      我们建议您对调试版本使用自动签名,并且 为您的分发版本手动签名。

                      【讨论】:

                      • 我已经在 Bug 报告器上发布了这个问题,但仍在交换信息以找出原因。
                      • 根据苹果:“您无法调试使用临时分发配置文件配置的内容。分发配置文件不允许调试...我们假设您使用的是手动签名。如果您选择分发签名证书,则不能选择开发配置文件。开发配置文件不包含分发签名证书。因此,如果要调试,则需要选择开发签名证书和开发配置文件. 顺便说一句,这就是自动签名为您完成的工作,无需大惊小怪。”
                      • 最新和最终回复:“工程部门根据以下信息确定此问题的行为符合预期:是的,根据我们所讨论的操作系统,调试进程的规则更强。 Ask On Launch 也可能会找到应用程序的不同副本,因此,即使在较新的 iOS 版本上,如果它获得分发签名副本,也可能有一种方法可以通过“Ask on Launch”运行某些东西。我们建议您使用自动为您的调试版本签名并为您的分发版本手动签名。”
                      • 11.3 为我工作
                      【解决方案14】:

                      我讨厌为此添加更多噪音,但对我来说,答案是毫无意义地使用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 中构建并拖到 /Applications 中。它不是代码签名的。 .appContentsMacOS 和可执行文件的 Posix 权限都是八进制 755。所有者是我。如果我将它留在 Build 文件夹中,它可以正常工作,以正常方式构建和调试。

                      问题显然出在 lldb 上。我还尝试从命令行使用 lldb (lldb-902.0.79.7)。我得到了同样的结果。它仅适用于sudo。没有sudo

                      error: attach failed: unable to attach
                      

                      【讨论】:

                      • 这看起来是个不错的解决方案,所以我对它对我的工作寄予厚望!可悲的是它没有。 ? 但是,我确实安装了两个版本的 Xcode。我会尝试删除一个。
                      【解决方案15】:

                      我也有这个问题。同时安装两个 Xcode 版本似乎存在问题。 (9.4.1 和 10.0 测试版)

                      它适用于测试版,但不适用于稳定版。一切都设置为 Xcode 9.4.1 稳定版的工具。我只能使用 beta 运行我的单元测试。

                      删除测试版后,它可以与稳定版本一起使用。

                      【讨论】:

                      • 这听起来像是我的问题。我安装了 Xcode 10 并更新到 Mojave。然后我不得不再次使用 Xcode 9.4,它开始像这样抱怨。我会尝试卸载 Xcode 10 看看是否有帮助。
                      【解决方案16】:

                      这发生在我的机器上,当我设置“新构建系统”时 转到菜单文件=> 工作区设置并将构建系统设置为“标准”。

                      【讨论】:

                        【解决方案17】:

                        (最有可能的解决方案)1.模拟器->硬件->擦除所有内容和设置

                        (不太可能的解决方案)2.钥匙串->右上角锁定->再次解锁并锁定(或相反)

                        【讨论】:

                        • 您能否详细说明:“钥匙串-> 右上角锁定-> 再次解锁并锁定(或相反)”。钥匙串应用程序?
                        • 我认为 Keychain Access 的 UI 在发布此答案后发生了变化。基本上你只需右键单击锁并单击解锁/锁定以刷新钥匙串。
                        • 这解决了我的问题。在 High Sierra 上使用 Xcode 9.2。
                        【解决方案18】:

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

                        我正在使用: - Xcode v9.2 - 斯威夫特 3.2 - 为 iOS 构建

                        我尝试过但不起作用的事情是:

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

                        正如@Rajasekhar 提到的那样:

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

                        之后它在模拟器中成功启动。我不知道问题是否会再次出现,但希望这可行。

                        【讨论】:

                        • 请不要添加“谢谢”作为答案。一旦你有足够的reputation,你将能够vote up questions and answers,你觉得有帮助。 - From Review
                        • 我包括了一个额外的步骤,以及如何删除上面没有提到但被另一个用户询问的证书
                        【解决方案19】:

                        这是钥匙串访问中证书不受信任的问题,请删除此类证书并重新构建。

                        【讨论】:

                        • 如何删除证书,能否详细说明一下?
                        • 打开钥匙串访问 -> 检查证书,在那里您可以找到与您的保护无关的证书。 (通常我想告诉你的是?'有时你会在钥匙链访问中打开未知证书,这些证书仅与你的项目相关,但目前在这些团队中没有任何成员资格')
                        • 还有一个建议是杀掉Xcode和模拟器,关掉你的设备然后重新启动,我相信这会解决问题。
                        • 我们可以通过重新启动设备和Xcode一次来实现。
                        • 这里发布的所有解决方案都不适合我。我什至重新启动了我的电脑几次。我目前只能在真实设备上运行。有更新吗?
                        【解决方案20】:

                        杀死我的模拟器,然后从 Xcode 再次运行它。

                        【讨论】:

                        • 我尝试了所有这些解决方案,但它暂时解决了错误。我可以得到它的永久解决方案吗?
                        【解决方案21】:

                        删除派生数据并清理项目,等待处理完成,这可能需要一些时间。这个想法是给一些处理时间。之后就可以正常使用了

                        【讨论】:

                        • 我尝试了该解决方案,但它暂时解决了错误。我可以得到它的永久解决方案吗?
                        【解决方案22】:

                        当您在构建开始后尝试构建太快时,这似乎是一个临时问题。尝试停止再次运行项目

                        【讨论】:

                        • 是的,它是暂时的。但是经常面对不同的PID>没有永久的解决方案吗?它工作正常,“停止并再次运行”。但不会永远消失。
                        • 不,还没有。似乎这是一个错误。尝试只运行一次,不要多次点击按钮。
                        • 是的,我在 Bug Reporter 中提出了同样的问题。但苹果无法追踪漏洞。我分享了使用命令xcrun simctl diagnose 生成的完整系统报告并转发给Apple。
                        • 没错!对我来说这是因为等待模拟器响应的时间过长
                        猜你喜欢
                        • 1970-01-01
                        • 2018-09-19
                        • 2016-09-04
                        • 1970-01-01
                        • 2021-10-25
                        • 2016-10-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2016-10-31
                        相关资源
                        最近更新 更多