无法附加到进程ID Xcode

Ren*_*ndy 109 xcode pid build ios-simulator

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

error: failed to attach to process ID <ID number>
Run Code Online (Sandbox Code Playgroud)

错误的屏幕截图

我试图重新安装,做这个帖子并创建新项目,但没有回复运气.有人可以解决这个问题吗?

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

小智 152

重置模拟器中的内容和设置对我有用.这可以在"iOS模拟器"菜单中找到.


Imr*_*ran 45

转到"产品"菜单,在那里找到"编辑方案"菜单.

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

  • -1.这是倒退的一大步.重置模拟器的内容可以解决问题,而无需更改调试器. (32认同)
  • 我有两个模拟器(5.1和6.0),退出xcode并重置两个模拟器的内容........它很奇怪,但它对我有用.... :-) (8认同)
  • 我将LLDB更改为GDB,但之后它总是显示为"附加到MYApp"并显示以下日志.GNU gdb 6.3.50-20050815(Apple版本gdb-1822)(Sun Aug 5 03:00:42 UTC 2012)版权所有2004 Free Software Foundation,Inc.GDB是免费软件,受GNU通用公共许可证保护,你是欢迎在某些条件下更改和/或分发它的副本.输入"show copying"查看条件.GDB完全没有保修.输入"show warranty"了解详情.此GDB配置为"x86_64-apple-darwin". (6认同)
  • 可能的帮助:我也改为GDB,运行应用程序一次,然后转回LLDB再次运行!所以你不必放弃LLDB的好处!试试看. (4认同)
  • @cdo重置内容对我不起作用,更改模拟器是的 (2认同)

小智 22

我遇到了同样的问题,过了一段时间后我发现这是因为我的XCode项目包含一个名为Resources的文件夹的文件夹引用.

似乎XCode不喜欢这个名字.

只需删除文件夹引用重命名文件夹就可以解决问题.


Amb*_*non 20

两种方法

方法1:在文件夹内部应用程序支持 - > iPhone模拟器 - > 在每个模拟器版本的iOS中 - >应用程序 - > 删除此处存在的所有文件.

现在去产品 - >清洁

现在在任何模拟器上运行它都可以工作.

方法2:

点击重置

  • 这是唯一对我有用的方法.我通过命名我的一个文件夹资源引起了这个问题,它杀死了我的项目,只是有一个心脏附加.Apple应该做得更好. (2认同)

Int*_*tss 8

第一步:ping

$ ping localhost
Run Code Online (Sandbox Code Playgroud)

这应该返回类似的东西

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
...
Run Code Online (Sandbox Code Playgroud)

如果这样可行,这个答案将无法解决您的问题,请尝试其他方法.

如果ping返回其他内容,例如:ping: cannot resolve localhost: Unknown host某些内容与您的/etc/hosts文件搞砸了,请转到步骤2

第2步:检查/ etc/hosts

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

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0     localhost
Run Code Online (Sandbox Code Playgroud)

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

第3步:正确的文件格式:它应该是unix或LF *

$ file /etc/hosts
Run Code Online (Sandbox Code Playgroud)

这应该返回: /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


ama*_*ttn 5

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

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

sudo chmod 644 /etc/hosts
Run Code Online (Sandbox Code Playgroud)

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


epl*_*oko 5

这是一个古老的话题,但是我相信最新版本的macOS的情况有所改变。

我在macOS Mojave Beta和Xcode 9.4.1上的模拟器中尝试为iOS应用运行UI测试套件时遇到了这个问题。

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

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

  1. 一个明显的例子,可能只是使用Xcode10。它似乎确实可以很好地处理连接。

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

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

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