有人遇到过这个问题吗?昨天我仍然可以在模拟器中运行我的应用程序,但现在我无法运行我的应用程序,因为 Xcode 在控制台中打印了这个错误:
error: failed to attach to process ID <ID number>
我试图重新安装,做这篇文章并创建新项目,但没有成功。任何人都可以解决这个问题?
我使用 Xcode 4.5 Preview 2 并尝试运行 iOS 模拟器 6
有人遇到过这个问题吗?昨天我仍然可以在模拟器中运行我的应用程序,但现在我无法运行我的应用程序,因为 Xcode 在控制台中打印了这个错误:
error: failed to attach to process ID <ID number>
我试图重新安装,做这篇文章并创建新项目,但没有成功。任何人都可以解决这个问题?
我使用 Xcode 4.5 Preview 2 并尝试运行 iOS 模拟器 6
重置模拟器中的内容和设置对我有用。这在“iOS 模拟器”菜单中可用。
转到产品菜单并在那里找到编辑方案菜单。
在 Edit Scheme 窗口中,选择屏幕左侧的“Run”选项,然后在右侧,将调试器从 LLDB 更改为 GDB。
我遇到了同样的问题,过了一会儿我发现这是由于我的 XCode 项目包含对名为Resources的文件夹的文件夹引用。
XCode 似乎不喜欢这个名字。
只需删除文件夹引用或重命名文件夹即可解决问题。
两种方法
方法1:在文件夹Application Support -> iPhone Simulator ->在iOS的每个模拟器版本中-> Applications ->删除此处存在的所有文件。
现在转到产品 -> 清洁
现在在任何模拟器上运行它,它就会工作。
方法二:
$ 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
文件的顶部是否如下所示
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
如果文件中没有这些条目,请在文件顶部输入它们,使用刷新 dns 缓存$ dscacheutil -flushcache
并返回步骤 1,否则继续步骤 3。
$ file /etc/hosts
这应该返回:/etc/hosts: ASCII English text
如果它返回类似/etc/hosts: ASCII English text, with CR line terminators
的内容,则文件格式错误,可能会被忽略。
使用您喜欢的文本编辑器将文件行结尾更改为 unix 或 LF。
刷新 dns 缓存 ( $ dscacheutil -flushcache
) 并返回步骤 1
与fundtimer的回答类似,本地主机文件似乎是罪魁祸首。
无意更改后,我不得不将/etc/hosts
权限更改回默认值:
sudo chmod 644 /etc/hosts
之后,模拟器/LLDB 为我工作。
这是一个老话题,但我相信最新版本的 macOS 发生了一些变化。
我在尝试在 macOS Mojave Beta 和 Xcode 9.4.1 的模拟器中为 iOS 应用程序运行 UI 测试套件时偶然发现了这个问题。
事实证明,在 macOS Mojave 上,该codesign
工具(它是操作系统本身的一部分,而不是命令行工具或 Xcode 的一部分)将进程签名到一个强化的运行时环境中,其中包括运行时代码签名强制、库验证、hard、kill、和调试限制。这与 macOS Mojave 中的系统完整性保护一起防止 lldb 调试器连接到正在运行的目标。
要解决此问题,您必须选择:
一个明显的可能就是使用 Xcode 10。它似乎可以优雅地处理连接。
将操作系统重新启动到恢复模式,然后使用 . 从终端关闭系统完整性保护csrutil disable
。调试器然后愉快地连接。
我花了很多时间来解决这个问题,并且在阅读以下文章后能够解决所有问题:http ://www.lapcatsoftware.com/articles/debugging-mojave.html
只是我的两分钱。希望这可以帮助某人。
我以某种方式从 /etc/hosts 文件中删除或删除了记录,我得到了同样的错误。您应该检查 /etc/hosts 文件中是否有“127.0.0.1 localhost”行。这对我有帮助!
我知道这是一个老问题,但当我在谷歌搜索“未能附加到进程 ID”时,它首先出现在我身上。我正在使用 Xcode 7。在 iOS9 发布之后发生,我已经为 swift 2 更新了我的 swift 应用程序。
在模拟器中删除我的应用程序并进行新的构建并运行将其清除。
我通过删除 Xcode Derived 数据内容解决了这个问题。
在查找器中按 SHIFT+CMD+G 并在路径下方键入并删除 DerivedData 中的所有数据:
~/Library/Developer/Xcode/DerivedData
还重置模拟器版本
~/Library/Application Support/iPhone Simulator/6.0/Applications
我刚刚从模拟器中删除了应用程序(就像在实际设备上一样),当我重新运行它时,一切正常。
我在设备上调试时遇到了同样的问题。该应用程序在启动时崩溃,但未显示为正在运行的进程。
我的解决方案是使用一些进程查看器应用程序(例如系统状态或类似的)。找到过时的应用程序,然后找到通常是debugserver的父进程 ID。
继续 Xcode,产品 -> 附加到进程 -> 按进程 ID 并附加到调试服务器进程 PID。稍等片刻,然后按停止按钮。
陈旧的调试服务器和应用程序进程消失。
(使用模拟器时,相当于使用终端,ps,并杀死App进程。虽然没有尝试过)。
我也有同样的问题,对我来说解决方案是:-
只需从模拟器中删除应用程序,然后清除并运行项目。
愿它也对其他人有所帮助。
我刚刚在开发者论坛上发布了这个。这是一个简单的解决方案,可以帮助这里的人:
我遇到了完全相同的问题:当使用任何当前版本的 Xcode 4.xx 和 LLDB 调试器,以及任何版本的模拟器时,XCode 始终以“无法附加到进程...”而崩溃我唯一的解决办法是切换到GDB 调试器。这令人失望,因为我真的很想在 XCode 4.6-DP 中尝试新的、强大的 LLDB。
然后我想起来了;前段时间我在 ...etc/hosts 更改了我的网络/服务器主机文件以容纳几个 Apache2 服务器虚拟主机,即,我删除了以下行:
127.0.0.1 本地主机
就是这样。删除该行后,XCode 在使用 LLDB 附加到模拟器时崩溃。恢复那条线,XCode 与 LLDB 和模拟器一起工作得很好。
无论如何,这可能不是您的问题,但值得探索。就我而言,这是一个严重的未记录错误。
我通过退出 XCode 和 Simulator 解决了这个问题。重新打开项目。完毕。
就我而言,解决方案有所不同:运行模式是“发布”。更改为“调试”修复了它。Xcode 4.5.x 没有问题。
对我来说,这个问题是由一个非常愚蠢的错误引起的:我通过复制现有目标为我的项目创建了一个新目标,却忘记更改目标 info.plist 文件中的捆绑标识符。
上面的答案真的帮助了我。 https://stackoverflow.com/a/12819757/1752988 因为在我的 XCode 中我使用了故事板和自定义视图控制器。在它的警告列表中,我看到一些 nib 文件丢失了。看到那个我很想念。但是,我看到了这个答案,尽管我不喜欢重置我的 App 模拟器内容,但我做到了,它确实对我有用。
而且将调试器从 Product -> Scheme -> Edit Scheme (Run) 从 LLDB 更改为 GDB 也对我不起作用。
Ps:- 请原谅我,我将此答案作为支持评论添加到上面,因为我没有 15 声望支持上述答案或 50 声望点来评论上面的评论。
我正在研究 Ionic 2 应用程序,我对此甚至 Xcode 和模拟器都是新手。
最初我的应用程序正在模拟器上运行,但一段时间后它开始生成错误,例如 -
xcode error: failed to attach to process 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
******************************************************
在此之后,我只是从我的应用程序主目录运行命令
看到这个很开心!!!
以下在 iOS 9.1 上对我有用:
注意:无需重置模拟器。
这么多答案,我没有看到我认为正确的答案。是授权的问题。在终端中输入:
sudo DevToolsSecurity -enable
您是否有多个用户登录到您的机器?我的笔记本电脑上有“个人”和“工作”帐户。当我尝试从我的个人帐户进行调试时出现此错误,但我让模拟器在我的工作帐户中运行。在另一个帐户中退出模拟器解决了我的问题。
try to do next steps:
Maybe additionally you need to delete derived data and do Product/Clean
只需重置 iOS 模拟器的内容和设置,然后按 command+shift+k 键清理代码即可清理代码。这对我有用
今天遇到了这个。我不小心从我的目标设置中删除了我的启动图像。
我有同样的问题。我做了一些给出的答案组合以使其工作。:)
通过单击菜单栏中的“产品”来清理构建文件夹。按住 Alt 键的同时单击“清理构建文件夹”。现在重新启动您的 xcode 和模拟器。现在它应该可以工作了。如果没有,也尝试更改捆绑标识符和模拟器“内容重置”,然后重新启动 xcode 和模拟器。
尽管很蹩脚,但重新启动我的计算机是唯一有效的解决方案。我尝试从 LLDB 切换到 GDB,重置模拟器的内容,然后重新启动 Xcode。唯一有效的是重新启动我的计算机,重新打开 Xcode,然后重新运行应用程序。
还有一个记录在案:(没有一个建议对我有用)
山狮: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
我遇到了同样的问题,就我而言,问题是:-
已设置“构建活动架构:否”。只需将其更改为 YES 即可。
今天也遇到了同样的问题。我使用的是 Xcode 4.6.3。我关闭了我的项目并在 Xcode 5 中打开它,它运行完美。
奇怪但真实
如果您的应用在运行时使用了一项或多项XPC 服务,请尝试在您的应用的调试方案中禁用这些服务的调试:
在我的例子中,XPC 服务与 Sparkle 更新框架相关。
如果您使用的是 Cocoapods,请确保您通过use_frameworks!
在 Podfile 中构建动态框架。
当我在 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
此页面或相关页面上的所有答案都无法附加到 pid:“####”无法附加对我有用。(此外,我看到的症状还有一个在这些页面中没有提到的附加细节,即 Gatekeeper 会出现并说它正在“验证”应用程序,即使它是一个运行在上的 iOS 应用程序模拟器。这总是在 PID 错误之前。)
以下是最终奏效的方法:
我让 xcode 尝试在模拟器中启动并附加到应用程序。它像往常一样失败,看门人“验证”,然后是 PID 错误。但是后来该应用程序安装在模拟器上,所以我只是在那里启动它并且它开始正常(如预期的那样)。但后来我使用了 xcode 的 Debug > Attach to process ... 菜单项并附加到运行应用程序的模拟器上。那行得通,现在它似乎已经解决了问题,我可以从 xcode 启动应用程序,它可以很好地连接到模拟器并让我调试,我不再得到 Gatekeeper“验证”对话框。
我知道这是旧的 - 但我的解决方案如下:
转到:目标>构建设置>链接-> Mach-O类型=可执行
正如@eploko 在他在 Mojave 中的回答中提到的,可调试性策略发生了变化。此答案仅适用于那些在使用 Xcode 9.4.1 和 Mojave 运行测试框架时遇到问题的人。
根据 Apple 的说法,这是一种预期行为,因此您有两种解决方案:
为此,请选择您的 Test 目标,然后选择Edit Scheme。在那里选择左侧的Test部分并取消选中Debug executable。
此雷达中的更多信息。我希望这可以帮助你。