无法附加到进程 ID Xcode

Posted

技术标签:

【中文标题】无法附加到进程 ID Xcode【英文标题】:Failed to Attach to Process ID Xcode 【发布时间】:2012-07-17 03:53:32 【问题描述】:

有人遇到过这个问题吗? 昨天我仍然可以在模拟器中运行我的应用程序,但现在我无法运行我的应用程序,因为 Xcode 在控制台中打印了这个错误:

error: failed to attach to process ID <ID number>

我尝试重新安装,执行此操作post 并创建新项目,但没有成功。 谁能解决这个问题?

我使用 Xcode 4.5 Preview 2 并尝试运行 ios 模拟器 6

【问题讨论】:

我想我面临着完全相同的问题 (***.com/questions/11688720/…)...给出的错误是“无法附加到进程 ID 0” 我在这里描述了一个可能的解决方案***.com/a/12504712/647644 你是如何解决这个问题的?请也告诉我。我真的需要解决方案。 请查看已接受的答案 我建议人们在尝试实际接受的更改调试器的答案之前先尝试“重置模拟器中的内容和设置”答案。 【参考方案1】:

如果您的应用在运行时使用一个或多个 XPC 服务,请尝试在应用的调试方案中禁用这些服务的调试:

    在 Xcode 中,单击菜单项 Product > Scheme > Edit Scheme。 点击选项标签。 禁用设置调试应用使用的 XPC 服务

在我的例子中,XPC 服务与 Sparkle 更新框架相关。

【讨论】:

【参考方案2】:

在 Xcode 9+ 上执行以下操作: 转到 Xcode 菜单:Product-Scheme - Edit Scheme 并在 Run 选项卡下确保选中了 Debug Executable 复选框!就是这样!

【讨论】:

对我来说奇怪的是,取消选中该框使其工作:/【参考方案3】:

此页面或相关页面Could not attach to pid : “####” unable to attach 上的所有答案均不适合我。 (此外,我看到的症状还有一个在这些页面中没有提到的附加细节,即 Gatekeeper 会出现并说它正在“验证”应用程序,即使它是一个运行在上的 iOS 应用程序模拟器。这总是在 PID 错误之前。)

以下是最终奏效的方法:

我让 xcode 尝试在模拟器中启动并附加到应用程序。它像往常一样失败,看门人“验证”,然后是 PID 错误。但是后来该应用程序安装在模拟器上,所以我只是在那里启动它并且它开始正常(如预期的那样)。但后来我使用了 xcode 的 Debug > Attach to process ... 菜单项并附加到运行应用程序的模拟器上。那行得通,现在它似乎已经解决了问题,我可以从 xcode 启动应用程序,它可以很好地连接到模拟器并让我调试,我不再得到 Gatekeeper“验证”对话框。

【讨论】:

【参考方案4】:

这个问题的答案太多了,我没有看到我认为正确的答案。是授权的问题。在终端中输入:

sudo DevToolsSecurity -enable

【讨论】:

【参考方案5】:

如果您使用的是 Cocoapods,请确保通过在您的 Podfile 中包含 use_frameworks! 来构建动态框架。

当我在 Xcode 10.2.1 和 Cocoapods 1.6.1 上构建我的 Cocoapods 依赖项的静态库时,由于这个“无法附加”错误,我无法调试目标。使用use_frameworks!,错误消失了,我可以再次调试。


详情

在我的 Podfile 中,我构建了一个静态框架,这是默认的,混合了基于 swift 和 Objective-c 的 Pod。我将:modular_headers =&gt; true 与其中一个吊舱一起使用。我的 Podfile 看起来像这样:

swift_version = '5.0'

target 'TargetName' do
  platform :ios, '12.2'

  pod 'IGListKit', :modular_headers => true
  pod 'PromiseKit/CorePromise', '~> 6.0'
end

上面的 Podfile 不能用 Xcode 10.2.1 调试,总是导致“Could not attach to PID” modal。

但是,当我添加use_frameworks! 时,它起作用了!我能够在有和没有的情况下复制它。这是有效的 Podfile:

swift_version = '5.0'
use_frameworks!

target 'TargetName' do
  platform :ios, '12.2'

  pod 'IGListKit'
  pod 'PromiseKit/CorePromise', '~> 6.0'
end

【讨论】:

【参考方案6】:

这是一个老话题,但我相信最新版本的 macOS 已经发生了一些变化。

我在尝试在 macOS Mojave Beta 和 Xcode 9.4.1 的模拟器中为 iOS 应用程序运行 UI 测试套件时偶然发现了这个问题。

事实证明,在 macOS Mojave 上,codesign 工具(它是操作系统本身的一部分,而不是命令行工具或 Xcode 的一部分)将进程标记为 强化运行时 环境,该环境包括运行时代码签名强制、库验证、硬、终止和调试限制。这与 macOS Mojave 中的系统完整性保护一起防止 lldb 调试器连接到正在运行的目标。

要解决这个问题,您必须选择:

    一个明显的,可能就是使用 Xcode 10。它似乎可以优雅地处理连接。

    将操作系统重新启动到恢复模式,并使用csrutil disable 从终端关闭系统完整性保护。然后调试器就可以愉快地连接了。

我花了相当多的时间来解决这个问题,并在阅读以下文章后能够解决所有问题:http://www.lapcatsoftware.com/articles/debugging-mojave.html

只有我的两分钱。希望这对某人有所帮助。

【讨论】:

但这只有在模拟器上运行才有意义(即在 MacOS 上)对吧?我在设备上运行时遇到错误... ...原来是因为我只是在重新签名后才安装.app。一旦我安装了完整的 .ipa 就很好了。【参考方案7】:

正如@eploko 在他在 Mojave 中的回答中提到的,可调试性政策发生了变化。此答案仅适用于那些在使用 Xcode 9.4.1 和 Mojave 运行测试框架时遇到问题的人。

根据 Apple 的说法,这是一种预期行为,因此您有两种解决方案:

    使用 Xcode 10,您的问题就会消失。 在方案编辑器中为您的测试目标禁用调试器。

为此选择您的测试目标,然后选择编辑方案。在那里选择左侧的 Test 部分并取消选中 Debug executable

更多信息请参见radar。希望对您有所帮助。

【讨论】:

【参考方案8】:

我正在开发 Ionic 2 应用程序,我是新手,甚至是 Xcode 和模拟器。 最初我的应用程序在模拟器上运行,但一段时间后它开始产生错误,例如 - xcode 错误:无法附加到进程 ID

我搜索并尝试了以上所有答案,但我的问题仍未解决。 然后我更新了(Ionic,npm,cordova)我的机器设置-

******************************************************
 Dependency warning - for the CLI to run correctly,      
 it is highly recommended to install/upgrade the following:     

 Install ios-deploy to deploy iOS applications to devices.  `npm install -g ios-deploy` (may require sudo)

******************************************************

Your system information:

Cordova CLI: 6.4.0 
Ionic Framework Version: 2.0.0-beta.10
Ionic CLI Version: 2.1.8
Ionic App Lib Version: 2.1.4
ios-deploy version: Not installed
ios-sim version: 5.0.8 
OS: OS X Yosemite
Node Version: v6.2.2
Xcode version: Xcode 7.2 Build version 7C68



******************************************************

在此之后,我只需从我的应用程序主目录运行命令

    离子运行-l 离子构建 ios。 导入的 xcode 更改为 xcode。 重置内容并设置为- 从 xcode 清除产品, 运行 Xcode,现在它正在模拟器上运行。

很高兴看到这个!!!

【讨论】:

【参考方案9】:

我知道这是旧的 - 但我的解决方案如下:

转到:目标 > 构建设置 > 链接 -> Mach-O 类型 = 可执行文件

【讨论】:

【参考方案10】:

以下内容在 iOS 9.1 上对我有用:

    只需从模拟器中卸载应用程序 退出模拟器 (Cmd+Q) 清理您的 Xcode 项目 在模拟器上运行

注意:无需重置模拟器。

【讨论】:

【参考方案11】:

我知道这是一个老问题,但是当我在谷歌搜索“未能附加到进程 ID”时,它首先出现在我身上。我正在使用 Xcode 7。发生在 iOS9 发布之后,我已经为 swift 2 更新了我的 swift 应用程序。

在模拟器中删除我的应用并进行新的构建并运行将其清除。

【讨论】:

这里也类似,只是我只是在模拟器中单击了该应用程序,它出现了,但随后出现问题停止。最后我只是重置了模拟器。【参考方案12】:

我遇到了同样的问题,就我而言,问题是:-

已设置“构建活动架构:否”。只需将其更改为 YES 即可。

【讨论】:

【参考方案13】:

今天也遇到了同样的问题。我使用的是 Xcode 4.6.3。我关闭了我的项目并在 Xcode 5 中打开它,它运行完美。

奇怪但真实

【讨论】:

对我来说这是一个答案,因为它很好地解决了我的问题【参考方案14】:

我通过退出 XCode 和 Simulator 解决了这个问题。重新打开项目。完成。

【讨论】:

【参考方案15】:

还有一个记录在案:(没有一个建议对我有用)

山狮:XCode 4.6.3

moved the whole Application to Trash并删除了以下其他文件夹 /Users/[USERNAME]/Library/Developer /Users/[USERNAME]/Library/Caches/com.apple.dt.XCode

/Users/[USERNAME]/Library/Application Support/iPhone Simulator

重启系统并重新安装 XCode

【讨论】:

【参考方案16】:

您是否有多个用户登录到您的计算机?我的笔记本电脑上有“个人”和“工作”帐户。当我尝试从我的个人帐户进行调试时出现此错误,但我让模拟器在我的工作帐户中运行。在其他帐户中退出模拟器解决了我的问题。

【讨论】:

【参考方案17】:

上面的答案真的帮助了我。 https://***.com/a/12819757/1752988 因为在我的 XCode 中,我使用了故事板和自定义视图控制器。在它的警告列表中,我看到一些 nib 文件丢失了。看到那个我很想念。但是,我看到了这个答案, 尽管我不喜欢重置我的应用模拟器内容,但我还是这样做了,它确实对我有用。

而且将调试器从 Product -> Scheme -> Edit Scheme (Run) 从 LLDB 更改为 GDB 也对我不起作用。

P.s.:- 请原谅我,我将此答案作为支持评论添加到上面,因为我没有 15 个声望支持上述答案或 50 个声望点来评论上面的评论。

【讨论】:

【参考方案18】:

尝试执行后续步骤:

转到产品/方案/编辑方案,然后选择运行部分。 选择 Info Tan 并设置 Debugger None。 运行项目。它必须工作(没有调试器) 返回编辑方案并选择调试器 LLDB 运行项目。它正在工作。

也许您还需要删除派生数据并进行产品/清洁

【讨论】:

【参考方案19】:

今天遇到了这个。我不小心从我的目标设置中删除了我的启动图像。

【讨论】:

【参考方案20】:

我通过删除 Xcode 派生数据内容解决了这个问题。

在查找器中按 SHIFT+CMD+G 并在路径下方键入并删除 DerivedData 中的所有数据:

  ~/Library/Developer/Xcode/DerivedData

同时重置模拟器版本

     ~/Library/Application Support/iPhone Simulator/6.0/Applications 

【讨论】:

【参考方案21】:

对我来说这个问题是由一个非常愚蠢的错误引起的:我通过复制现有目标为我的项目创建了一个新目标,却忘记更改目标 info.plist 文件中的 Bundle Identifier

【讨论】:

【参考方案22】:

我遇到了同样的问题。我做了一些给出的答案组合以使其发挥作用。 :)

通过单击菜单栏中的“产品”来清理构建文件夹。按住 Alt 键的同时单击“清理构建文件夹”。现在重新启动您的 xcode 和模拟器。 现在它应该可以工作了。如果没有,也尝试更改捆绑标识符和模拟器“内容重置”,然后重新启动 xcode 和模拟器。

【讨论】:

【参考方案23】:

虽然很蹩脚,但重启我的电脑是唯一有效的解决方案。我尝试从 LLDB 切换到 GDB,重置模拟器的内容,然后重新启动 Xcode。唯一有效的是重新启动我的计算机,重新打开 Xcode,然后重新运行应用程序。

【讨论】:

【参考方案24】:

两种方法

方法一:文件夹内Application Support -> iPhone Simulator -> iOS各模拟器版本中 -> Applications -> 删除此处显示的所有文件。

现在转到产品 -> 清洁

现在在任何模拟器上运行它就可以了。

方法二

【讨论】:

这是唯一对我有用的方法。我通过命名我的文件夹资源之一引起了这个问题,它杀死了我的项目,只是有一颗心。苹果真的应该做得更好。【参考方案25】:

我也有同样的问题,对我来说解决方案是:-

只需从模拟器中删除应用程序,然后清除并运行项目。

愿它对其他人也有帮助。

【讨论】:

【参考方案26】:

在我的情况下,解决方案有所不同:运行模式是“发布”。更改为“调试”修复了它。 Xcode 4.5.x 没有问题。

【讨论】:

【参考方案27】:

第一步:ping

$ ping localhost

这应该返回类似

PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.028 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.048 ms
...

如果可行,此答案将无法解决您的问题,请尝试其他方法。

如果 ping 返回其他内容,例如:ping: cannot resolve localhost: Unknown host 您的/etc/hosts 文件有问题,请转到第 2 步

第二步:检查 /etc/hosts

检查/etc/hosts 文件的顶部是否如下所示

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0     localhost

如果文件中没有这些条目,则在文件顶部输入,使用$ dscacheutil -flushcache刷新dns缓存并返回步骤1,否则继续第 3 步。

Step3:正确的文件格式:应该是unix或LF*

$ file /etc/hosts

这应该返回:/etc/hosts: ASCII English text

如果它返回类似/etc/hosts: ASCII English text, with CR line terminators 的内容,则该文件格式错误,可能会被忽略。

使用您喜欢的文本编辑器将文件行结尾更改为 unix 或 LF。

在 Sublime Text 2 中,这可以通过视图菜单完成:View > Line Endings > Unix

刷新 dns 缓存 ($ dscacheutil -flushcache) 并返回步骤 1

【讨论】:

在尝试了其他所有方法之后,这终于解决了我的问题!谢谢! 我最近修改了 etc/hosts,效果不佳 - 感谢您的回答【参考方案28】:

我刚刚从模拟器中删除了应用程序(就像您在实际设备上一样),当我重新运行它时一切正常。

【讨论】:

【参考方案29】:

我不知何故从我的 /etc/hosts 文件中删除或删除了记录,我得到了同样的错误。 您应该检查 /etc/hosts 文件中是否有“127.0.0.1 localhost”行。 这对我有帮助!

【讨论】:

谢谢。我遇到了这个错误并尝试了一切,但没有任何效果。我检查了我的主机文件,它是空的,除了 Avast 防病毒软件的一行。 Avast 实际上覆盖了我之前自定义的主机文件(WTH?)!我在主机文件中添加了“127.0.0.1 localhost”行,并保存了它。然后我重置了 iPhone 模拟器,在 Xcode 中进行了“清理”,并在我下次运行应用程序时立即启动。我不再需要 Avast。 是的,我也不喜欢avast 我花了一段时间才知道如何访问 hosts 文件夹。从 Finder 中选择“Go”菜单并选择“Go to folder...”然后输入:/private/etc/hosts.txt 其实可能需要输入$sudo /etc/hosts 我知道这是一年前的答案。但我想知道“127.0.0.1 localhost”和“127.0.0.1 serverchat.local”之间是否有区别。我应该删除 serverchat.local 并用 localhost 替换它吗?建议请...【参考方案30】:

我在设备上调试时遇到了同样的问题。应用程序在启动时崩溃,但没有显示为正在运行的进程。

我的解决方案是使用一些进程查看器应用程序(例如系统状态或类似的)。找到你陈旧的应用程序,然后找到父进程 id,它通常是 debugserver

继续 Xcode,产品 -> 附加到进程 -> 通过进程 ID 并附加 debugserver 进程 PID。稍等片刻,然后按停止按钮。

陈旧的调试服务器和应用程序进程消失。

(在使用模拟器的时候,相当于是使用终端,ps,杀掉App进程,不过没试过)。

【讨论】:

在过去半个小时左右的时间里,我一直在努力解决这个问题之前和之后都遇到了这个错误,这导致了我的修复。非常感谢。 '

以上是关于无法附加到进程 ID Xcode的主要内容,如果未能解决你的问题,请参考以下文章

无法附加到进程ID Xcode *

iOS - Xcode 错误:由于系统完整性保护而无法附加到进程

Xcode lldb 无法附加到 MacOS 系统程序 /bin/cp -“不允许附加到进程。”

Xcode Instruments 附加到进程

Xcode 编译我的应用程序,但无法在模拟器中运行它

无法使用 Visual Studio 2005 附加到创建的进程