114

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

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

错误截图

我试图重新安装,做这篇文章并创建新项目,但没有成功。任何人都可以解决这个问题?

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

4

36 回答 36

153

重置模拟器中的内容和设置对我有用。这在“iOS 模拟器”菜单中可用。

于 2012-10-10T12:49:56.747 回答
45

转到产品菜单并在那里找到编辑方案菜单。

在 Edit Scheme 窗口中,选择屏幕左侧的“Run”选项,然后在右侧,将调试器从 LLDB 更改为 GDB。

于 2012-09-14T11:47:38.280 回答
22

我遇到了同样的问题,过了一会儿我发现这是由于我的 XCode 项目包含对名为Resources的文件夹的文件夹引用

XCode 似乎不喜欢这个名字。

只需删除文件夹引用重命名文件夹即可解决问题。

于 2012-10-11T08:44:20.610 回答
20

两种方法

方法1:在文件夹Application Support -> iPhone Simulator ->在iOS的每个模拟器版本中-> Applications ->删除此处存在的所有文件。

现在转到产品 -> 清洁

现在在任何模拟器上运行它,它就会工作。

方法二

点击重置

于 2012-10-08T05:35:52.057 回答
9

第一步:平

$ 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

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

第三步:正确的文件格式:应该是 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

于 2013-04-08T05:57:54.843 回答
5

与fundtimer的回答类似,本地主机文件似乎是罪魁祸首。

无意更改后,我不得不将/etc/hosts权限更改回默认值:

sudo chmod 644 /etc/hosts

之后,模拟器/LLDB 为我工作。

于 2012-12-12T23:46:53.400 回答
5

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

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

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

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

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

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

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

只是我的两分钱。希望这可以帮助某人。

于 2018-09-05T13:23:40.257 回答
4

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

于 2013-01-19T11:49:29.097 回答
3

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

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

于 2015-10-04T01:54:48.747 回答
2

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

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

  ~/Library/Developer/Xcode/DerivedData

在此处输入图像描述

还重置模拟器版本

     ~/Library/Application Support/iPhone Simulator/6.0/Applications 
于 2013-07-16T06:53:43.200 回答
2

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

于 2013-03-07T17:34:24.850 回答
2

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

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

继续 Xcode,产品 -> 附加到进程 -> 按进程 ID 并附加到调试服务器进程 PID。稍等片刻,然后按停止按钮。

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

(使用模拟器时,相当于使用终端,ps,并杀死App进程。虽然没有尝试过)。

于 2012-12-20T12:37:59.797 回答
2

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

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

愿它也对其他人有所帮助。

于 2013-05-09T09:37:33.290 回答
1

我刚刚在开发者论坛上发布了这个。这是一个简单的解决方案,可以帮助这里的人:

我遇到了完全相同的问题:当使用任何当前版本的 Xcode 4.xx 和 LLDB 调试器,以及任何版本的模拟器时,XCode 始终以“无法附加到进程...”而崩溃我唯一的解决办法是切换到GDB 调试器。这令人失望,因为我真的很想在 XCode 4.6-DP 中尝试新的、强大的 LLDB。

然后我想起来了;前段时间我在 ...etc/hosts 更改了我的网络/服务器主机文件以容纳几个 Apache2 服务器虚拟主机,即,我删除了以下行:

127.0.0.1 本地主机

就是这样。删除该行后,XCode 在使用 LLDB 附加到模拟器时崩溃。恢复那条线,XCode 与 LLDB 和模拟器一起工作得很好。

无论如何,这可能不是您的问题,但值得探索。就我而言,这是一个严重的未记录错误。

于 2012-11-29T03:02:10.070 回答
1

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

于 2013-10-07T11:15:18.707 回答
1

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

于 2013-04-09T12:20:19.080 回答
1

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

于 2013-07-11T08:19:11.260 回答
1

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

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

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

于 2013-08-23T05:06:15.137 回答
1

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

在此处输入图像描述

于 2017-11-17T15:41:02.247 回答
1

我正在研究 Ionic 2 应用程序,我对此甚至 Xcode 和模拟器都是新手。
最初我的应用程序正在模拟器上运行,但一段时间后它开始生成错误,例如 -
xcode error: failed to attach to process id

我搜索,尝试了以上所有答案,但我的问题没有解决。
然后我更新了(Ionicnpmcordova)我的机器设置-

******************************************************
 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



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

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

  1. 离子运行-l
  2. 离子构建 ios。
  3. 导入的 xcode 更改为 xcode。
  4. 重置内容并设置为-
    在此处输入图像描述
  5. 从 xcode 清除产品,
    在此处输入图像描述
  6. 运行 Xcode,现在它正在模拟器上运行。

看到这个很开心!!!

于 2016-11-17T08:55:57.540 回答
1

以下在 iOS 9.1 上对我有用:

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

注意:无需重置模拟器。

于 2015-11-23T22:57:48.710 回答
1

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

sudo DevToolsSecurity -enable

于 2019-07-26T22:40:49.710 回答
0

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

于 2013-09-01T16:38:10.433 回答
0

try to do next steps:

  • Go to Product/Scheme/Edit Scheme then select Run section.
  • Select Info Tan and set Debugger None.
  • Run project. It must be working (without debugger)
  • Go back to Edit Scheme and selecet debugger LLDB
  • Run project. It is working.

Maybe additionally you need to delete derived data and do Product/Clean

于 2013-07-30T08:52:41.830 回答
0

只需重置 iOS 模拟器的内容和设置,然后按 command+shift+k 键清理代码即可清理代码。这对我有用

于 2012-11-15T05:09:47.800 回答
0

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

于 2013-07-21T19:20:03.720 回答
0

我有同样的问题。我做了一些给出的答案组合以使其工作。:)

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

于 2013-07-02T19:02:33.127 回答
0

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

于 2013-06-11T20:34:31.153 回答
0

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

山狮: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

于 2013-09-11T17:06:28.117 回答
0

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

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

于 2015-04-29T11:30:29.860 回答
0

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

奇怪但真实

于 2014-02-27T07:46:36.730 回答
0

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

  1. 在 Xcode 中,单击菜单项Product > Scheme > Edit Scheme
  2. 单击选项选项卡。
  3. 禁用设置应用程序使用的调试 XPC 服务

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

于 2021-06-17T19:11:45.290 回答
0

如果您使用的是 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
于 2019-04-19T19:54:55.643 回答
0

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

以下是最终奏效的方法:

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

于 2019-12-12T12:11:52.880 回答
0

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

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

于 2016-03-29T21:02:43.970 回答
0

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

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

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

为此,请选择您的 Test 目标,然后选择Edit Scheme。在那里选择左侧的Test部分并取消选中Debug executable

在此处输入图像描述

此雷达中的更多信息。我希望这可以帮助你。

于 2018-10-11T14:47:04.150 回答