无法附加到进程ID Xcode


113

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

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

屏幕截图错误

我曾尝试重新安装,这样做,并创建新的项目,但回报没有运气。任何人都可以解决此问题?

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


我认为我正面临着完全相同的问题(stackoverflow.com/questions/11688720/…)...给出的错误是“无法附加到进程ID 0”
PierrOz 2012年

1
我在这里描述了一种可能的解决方案stackoverflow.com/a/12504712/647644
Lindemann 2012年

您如何解决这个问题?请也告诉我。我真的需要解决方案。
iOS

请查看已接受的答案
Rendy 2012年

1
我建议人们尝试“更改模拟器中的内容和设置”答案,然后再尝试更改调试器的实际答案。
dartacus

Answers:


153

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


1
不是为我工作。仍然显示带有状态栏的黑屏(甚至清除了代码)。如Imran所述,将调试器更改为GDB后,我的应用程序加载正常。
user427969 2012年

1
重置内容和设置后,退出模拟器并重新启动。像魅力一样工作。
justinkoh 2013年

45

转到“产品”菜单,然后在其中找到“编辑方案”菜单。

在“编辑方案”窗口中,选择屏幕左侧的“运行”选项,然后在右侧,将调试器从LLDB更改为GDB。


6
我将LLDB更改为GDB,但之后始终显示为“附加到MYApp”,并显示以下日志。GNU gdb 6.3.50-20050815(Apple版本gdb-1822)(星期日,UTC 2012年8月5日03:00:42)版权所有2004 Free Software Foundation,Inc. GDB是自由软件,受GNU通用公共许可证保护,您是欢迎在某些条件下进行更改和/或分发。键入“显示复制”以查看条件。GDB绝对没有保修。键入“显示保修”以获取详细信息。该GDB被配置为“ x86_64-apple-darwin”。
iOS_Developer 2012年

8
我当时有两个模拟器(5.1和6.0),退出xcode并重置两个模拟器的内容.....这很奇怪,但是对我
有用

32
-1。这是倒退的一大步。重置模拟器的内容可以解决该问题,而无需更改调试器。
ozz 2012年

2
@cdo重置内容对我不起作用,更改模拟器是
Teofilo以色列Vizcaino Rodrig 2012年

4
可能的帮助:我也改用了GDB,运行了一次该应用程序,然后又转回LLDB,它又可以正常工作了!因此,您不必放弃LLDB的好处!试试看。
2013年

22

我遇到了同样的问题,一段时间后,我发现这是由于我的XCode项目包含对名为Resources的文件夹的Folder Reference所致。

似乎XCode不喜欢该名称。

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


1
我花了将近一天的时间才弄清楚。#fail
德克萨斯州,

1
这对我有用。重命名后,我不得不重新启动XCode和Simulator。
2013年

21

两种方法

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

现在转到产品->清洁

现在,在任何模拟器上运行它,它将起作用。

方法2

点击重置


2
这是唯一对我有用的方法。我是通过命名我的一个文件夹Resources引起问题的,它杀死了我的项目,几乎引起了我的注意。苹果确实应该做得更好。
扎克·莫里斯

9

步骤1: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

步骤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

步骤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


在尝试了所有其他方法之后,这终于解决了我的问题!谢谢!
约拿(Jonah)2013年

我最近修改了etc / hosts,但效果很差-感谢您的回答
bdalziel 2014年

5

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

/etc/hosts意外更改后,我必须将权限更改回默认值:

sudo chmod 644 /etc/hosts

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


在我的情况下,我加入我编辑hosts文件有这个地址“:: 1 newlocaldomain.local”
subharb

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

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


但这仅在模拟器(即MacOS)上运行有意义吗?我正在设备上运行该错误...
Dylan Nicholson

...原来是因为我只是在重新签名后才安装.app。一旦安装了完整的.ipa,就可以了。
迪伦·尼科尔森

4

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


2
谢谢。我遇到了这个错误,尝试了一切,但没有任何效果。我检查了主机文件,该文件为空,但Avast防病毒文件只有一行。Avast实际上覆盖了我以前自定义的主机文件(WTH?)!我在主机文件中添加了“ 127.0.0.1 localhost”行,并将其保存。然后,我重置了iPhone模拟器,在Xcode中执行了“清理”操作,然后在下次运行该应用程序时就开始了。没有更多适合我的Avast。
瑞安

是的,我也不喜欢avast
pedrouan 2013年

花了我一段时间来找出如何进入主机文件夹。从Finder中,选择“转到”菜单,然后选择“转到文件夹...”,然后输入:/private/etc/hosts.txt
Jonah

实际上,您可能需要输入$ sudo / etc / hosts
pedrouan 2014年

我知道这是一年前的答案。但是我想知道“ 127.0.0.1 localhost”和“ 127.0.0.1 serverchat.local”之间是否有区别。我应该删除serverchat.local并将其替换为localhost吗?请提供建议...
梅尔文黎

4

我知道这是一个古老的问题,但是当我在Google搜索“无法附加到进程ID”时,它首先出现在我身上。我正在使用Xcode7。发生在iOS9发布之后,并且我已将Swift应用程序更新为Swift 2。

在模拟器中删除我的应用并执行新的构建并运行清除了它。


1
这里也类似,只是我只是在模拟器中单击了该应用程序,但它出现了,但随后出现了问题。最后,我只是重置了模拟器。
MCB 2015年

2

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


2

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

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

希望它对其他人也有帮助。


1

我刚刚将其发布在开发者论坛上。这是一个简单的解决方案,可能会对这里的人有所帮助:

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

然后我想起了 不久前,我已经在... etc / hosts上更改了网络/服务器主机文件,以适应多个Apache2服务器虚拟主机,即,我删除了以下行:

127.0.0.1 locahost

就是这样 删除该行后,XCode在使用LLDB连接到模拟器时崩溃。恢复该行后,XCode与LLDB和Simulator可以很好地工作。

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


1

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

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

转到Xcode,产品->附加到进程->按进程ID,然后附加debugserver进程PID。等待一秒钟,然后按停止按钮。

过时的debugserver和应用程序进程消失。

(使用模拟器时,等效的方法是使用终端ps并终止App进程。不过,您还没有尝试过)。


在过去的半小时内,我一直在碰这个问题之前和之后都遇到了这个错误,这导致了我的解决。谢谢一个吨的人。'
Gowiem

1

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


1

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


1

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

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

  ~/Library/Developer/Xcode/DerivedData

在此处输入图片说明

同时重置模拟器版本

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

1

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

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

附言:对不起,我在上方补充了此答案作为支持评论,因为我没有15个声望赞扬以上答案或有50个声望点可以发表评论。


1

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


1

以下内容适用于iOS 9.1:

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

注意:无需重置模拟器。


1

我正在研究Ionic 2应用程序,对此,甚至Xcode和模拟器都是新手。
最初,我的应用程序正在模拟器上运行,但是一段时间后,它开始生成错误,例如
-xcode错误:无法附加到进程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. 离子运行
  2. 离子构建ios。
  3. 导入的xcode更改为xcode。
  4. 重置内容并将其设置为
    在此处输入图片说明
  5. 从xcode清除产品,
    在此处输入图片说明
  6. 运行Xcode,现在它正在模拟器上运行。

很高兴看到这个!!!


1

答案如此之多,我没有看到我认为是正确的答案。授权有问题。在终端中输入以下内容:

sudo DevToolsSecurity -enable


1

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

在此处输入图片说明


对我来说,很奇怪的是,取消选中该复选框即可使其工作:/
hyouuu

0

只需重置iOS模拟器的内容和设置,然后通过按Command + Shift + K键清除代码即可清除代码。


0

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


0

我有同样的问题。为了使它起作用,我做了一些答案的组合。:)

通过单击菜单栏中的“产品”来清理构建文件夹。在按Alt键的同时,单击“清理生成文件夹”。现在重新启动您的xcode和模拟器。现在应该可以了。如果不是,请尝试更改捆绑标识符和模拟器“ Content Reset”,然后重新启动xcode和模拟器。


0

今天跑过去。我不小心从目标设置中删除了启动图像。


0

尝试执行以下步骤:

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

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


0

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


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


0

今天也有同样的问题。我正在使用Xcode 4.6.3。我关闭了我的项目,并在Xcode 5中将其打开,它运行得非常完美。

奇怪但真实


对我来说,这是一个答案,因为它可以解决我的问题
Mohit
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.