无法附加到进程 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 => 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的主要内容,如果未能解决你的问题,请参考以下文章
iOS - Xcode 错误:由于系统完整性保护而无法附加到进程