无法附加到进程ID Xcode

时间:2012-07-18 06:57:47

标签: xcode build ios-simulator pid

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

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

Screenshot for error

我尝试重新安装,执行此操作post并创建新项目,但没有回复运气。 任何人都可以解决这个问题吗?

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

36 个答案:

答案 0 :(得分:152)

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

答案 1 :(得分:45)

转到“产品”菜单,找到“编辑方案”菜单。

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

答案 2 :(得分:21)

我遇到了同样的问题,过了一段时间后我发现这是因为我的XCode项目包含文件夹参考到名为 Resources <的文件夹/ EM>

似乎XCode不喜欢这个名字。

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

答案 3 :(得分:20)

两种方法

方法1 :在文件夹应用程序支持 - &gt;内iPhone模拟器 - &gt; 在iOS的每个模拟器版本中 - &gt;应用程序 - &gt; 删除此处显示的所有文件。

现在转到产品 - &gt;清洁

现在在任何模拟器上运行它都可以。

方法2

Tap on Reset

答案 4 :(得分:8)

第一步: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

如果文件中没有这些条目,请在文件顶部输入,使用$ dscacheutil -flushcache刷新dns缓存并返回步骤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中,这可以通过视图菜单完成:查看&gt;行结尾&gt;的Unix

刷新dns缓存($ dscacheutil -flushcache)并返回第1步

答案 5 :(得分:5)

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

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

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

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

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

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

我花了很多时间对此事进行思考,并且在阅读以下文章后能够解决所有问题:https://varnish-cache.org/docs/trunk/users-guide/vcl-hashing.html

我只有两美分。希望这对某人有帮助。

答案 6 :(得分:5)

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

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

sudo chmod 644 /etc/hosts

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

答案 7 :(得分:4)

我知道这是一个老问题,但是当我进行谷歌搜索&#34;没有附加到进程ID&#34;时,它首先出现在我面前。我正在使用Xcode 7.在iOS9发布后发生了我已经更新了swift 2的swift应用程序。

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

答案 8 :(得分:4)

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

答案 9 :(得分:2)

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

答案 10 :(得分:2)

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

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

也许对其他人也有帮助。

答案 11 :(得分:1)

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

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

继续使用Xcode,产品 - &gt;附加到流程 - &gt;按进程ID并将附加到 debugserver 进程PID。等一下,然后按停止按钮。

过时的debugserver和app进程消失。

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

答案 12 :(得分:1)

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

答案 13 :(得分: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. 离子运行-l
  2. ionic build ios。
  3. 导入xcode更改为xcode。
  4. 重置内容并设置为 -
    enter image description here
  5. 来自xcode的清晰产品,
    enter image description here
  6. 运行Xcode,现在正在使用模拟器。
  7. 很高兴看到这个!!!

答案 14 :(得分:1)

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

答案 15 :(得分:1)

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

在Finder中按SHIFT + CMD + G并键入以下路径并删除DerivedData中的所有数据:

  ~/Library/Developer/Xcode/DerivedData

enter image description here

同时重置模拟器构建

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

答案 16 :(得分:1)

在XCode 9+上执行以下操作: 转到XCode菜单:产品方案 - 编辑方案,然后在运行标签下,确保选中 Debug Executable 复选框!那就是它!

enter image description here

答案 17 :(得分:1)

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

答案 18 :(得分:1)

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

并且还从产品更改调试器 - &gt;方案 - &gt;从LLDB到GDB的编辑方案(运行)对我来说也不起作用。

P.s。: - 请原谅我,我在上面添加了这个答案作为支持评论,因为我没有15个声誉支持上述答案或50点声誉对上述评论。

答案 19 :(得分:1)

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

我有完全相同的问题:当使用任何当前版本的Xcode 4.xx和LLDB调试器,加上任何版本的模拟器时,XCode一直崩溃,“未能附加到进程......”我的唯一解决方案是切换到GDB调试器。这是令人失望的,因为我真的想在XCode 4.6-DP中尝试新的,强大的LLDB。

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

127.0.0.1 locahost

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

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

答案 20 :(得分:0)

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

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

就我而言,XPC 服务与 Sparkle 更新框架相关。

答案 21 :(得分:0)

正如@eploko在他在莫哈韦沙漠(Mojave)中的回答中所提到的,可调试性策略发生了变化。该答案仅适用于使用Xcode 9.4.1和Mojave运行测试框架时遇到的问题。

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

  1. 使用Xcode 10,您的问题将消失。
  2. 在方案编辑器中为您的Test目标禁用调试器。

为此,请选择您的测试目标,然后选择编辑方案。在那里,选择左侧的测试部分,然后取消选中调试可执行文件

enter image description here

radar中的更多信息。希望对您有帮助。

答案 22 :(得分:0)

如果您使用的是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进行调试,始终导致出现“无法附加到PID”模态。

但是,当我添加use_frameworks!时,它起作用了!无论有没有,我都能做到。这是有效的Podfile:

swift_version = '5.0'
use_frameworks!

target 'TargetName' do
  platform :ios, '12.2'

  pod 'IGListKit'
  pod 'PromiseKit/CorePromise', '~> 6.0'
end

答案 23 :(得分:0)

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

sudo DevToolsSecurity -enable

答案 24 :(得分:0)

此页面或相关页面Could not attach to pid : “####” unable to attach上的答案都没有为我工作。 (此外,我看到的症状有一个额外的细节,而这些页面上都没有提到,这是Gatekeeper会出现,并说它正在“验证”该应用程序,即使它是运行于iOS上的iOS应用程序也是如此。模拟器。总是在PID错误之前。)

这是最终起作用的东西:

我让xcode尝试启动并附加到模拟器中的应用程序。与往常一样,网守“验证”失败,然后出现PID错误。但是随后将应用程序安装在模拟器上,因此我就在那里启动了它,并且运行正常(如预期)。但是随后我使用了xcode的“调试”>“附加到进程...”菜单项,并附加到运行该应用程序的模拟器。那行得通,现在看来已经解决了问题,我可以从xcode启动该应用程序,它可以很好地连接到模拟器并进行调试,而不再获得Gatekeeper的“验证”对话框。

答案 25 :(得分:0)

如果没有答案适合可能需要它的人。这是我为Xcode 11.x.x解决的方法 在终端上运行以下命令: sudo DevToolsSecurity -enable 然后您可以重新启动iOS模拟器

答案 26 :(得分:0)

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

转到:目标&gt;构建设置&gt;链接 - &gt; Mach-O Type =可执行

答案 27 :(得分:0)

我有同样的问题,在我的情况下问题是: -

已设置&#34;构建活动架构:否&#34;。只需将其更改为YES即可。

答案 28 :(得分:0)

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

奇怪但真实

答案 29 :(得分:0)

和另一个记录:(没有任何建议对我有用)

Mountain Lion: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

答案 30 :(得分:0)

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

答案 31 :(得分:0)

尝试做下一步:

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

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

答案 32 :(得分:0)

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

答案 33 :(得分:0)

我遇到了同样的问题。为了使它成功,我做了一些答案的组合。 :)

单击MenuBar中的“Product”清理Build文件夹。按住Alt键的同时单击“清理构建文件夹”。现在重新启动你的xcode和模拟器。 现在它应该工作。如果没有,也尝试更改包标识符和模拟器“内容重置”,然后重新启动xcode和模拟器。

答案 34 :(得分:0)

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

答案 35 :(得分:0)

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