Xcode卡在索引上

146

我已经为这个项目工作了2个月,但是因为Xcode卡在“索引”上而突然停止工作。我无法再构建该项目。如果我尝试构建,Xcode会冻结,我必须强制退出。这只发生在这个项目中。

我尝试清除所有派生数据,但没有帮助。

我正在使用Xcode 4.5.2。

有任何想法吗?


2
苹果及其强大的Xcode 5在同一问题上存在困扰。 - Coldsteel48
顺便说一句,对我来说在 MAC 上更改日期解决了问题,(不知道为什么和如何解决的问题,但确实解决了问题) - Coldsteel48
尝试了所有的方法,但都不起作用。老实说,Xcode从第一个版本开始就存在这个问题。而且它会突然出现,没有任何原因。 - Bagusflyer
2
我在Xcode 9.1上遇到了这个问题。四年过去了,他们仍然有同样的问题 :| - Sabri Meviş
3
Xcode 10 GM也需要翻译 - QED
显示剩余6条评论
40个回答

4

按住alt键,然后选择“产品”菜单,再选择“清理构建文件夹”


3
我完全退出Xcode并重新启动项目,这对我有用。
这不是原问题的解决方案,我不相信,但在删除文件和文件夹等之前尝试一件更简单的事情。感谢这个答案提供的思路。

3

对我来说什么都没用,我的项目太大了(合并了目标 c , c ++ , swift 和 java 文件与j2obj)。我禁用了Xcode索引,并且没有代码完成工作了几个月(这很痛苦)。但最终我找到了一个解决方法。关键是保持Xcode索引代码,但使用像 cputhrottle 这样的外部工具限制其CPU使用率。

首先,您需要在终端中安装cputhrottle

brew install cputhrottle

然后像这样限制Xcode索引进程(20 = 20%)

sudo cputhrottle $(pgrep -f com.apple.dt.SKAgent)20

我在此处公开了我的“解决方案”,更详细的内容请参见: 如何在索引大型项目时防止Xcode使用100%的CPU


这很有帮助,尽管cputhrottle不再在homebrew中。您可以使用cpulimit代替,但它的语法略有不同: "sudo cpulimit -l 20 -p $(pgrep -f com.apple.dt.SKAgent)" -- 尽管我现在可以再次跟踪(以前是不可能的),但我更愿意找出索引需要花费如此长时间的原因,并跳过对其进行索引,但我不知道它是什么,如何找出它,或如何跳过某些内容(我怀疑一些较大的链接二进制文件或甚至boost??我只编译C ++,不使用Swift)。 - Eike
好的,我必须撤回那个决定。一开始似乎有帮助,但后来在限制 skagent 的 CPU 使用时出现了一些奇怪的行为。无论如何,那只解决了症状,所以不建议这样做。 - Eike
我仍然使用这个。另一个选择是完全禁用Xcode索引,但对我来说这是最糟糕的。如果我不这样做,每次修改文件时Xcode都会保持100%的索引(基本上是24小时/ 24),当我在编辑器中输入时,它每2秒打印1个字符,无法使用。 - jptsetung
好的,这是一种有效但有些粗暴的方法来解决问题。如果这对你有用,那就很好。我在执行此操作后遇到了Xcode崩溃/卡死的情况。然后我尝试了Kijans答案中的第3步(即不仅删除派生数据,还要从.xcworkspace中删除.xcuserdata),现在一切都恢复正常了。之前不知道这个方法。 - Eike

2

对我来说,我犯了一个愚蠢的错误。我写了一个像这样的类:

class A: A {
.......
}

一个类继承自身会导致程序冻结。在Xcode中没有任何提示信息。


这是一个非常可能的原因。在我的情况下就是这样。我相当确定我以前也遇到过这个问题。 - Form

2
我曾经遇到过类似的问题,Xcode会花费大量时间进行索引,并经常在构建项目时挂起,这时我不得不强制退出并重新启动Xcode,非常烦人。
后来我注意到项目中有一个关于不正确地将self分配为代理的警告。果然,在类声明中缺少一个协议。请注意,OP的示例代码中也有类似的分配(尽管从示例中无法确定是否声明了正确的协议)。
leaderboardController.leaderboardDelegate == self;

在解决了警告(通过正确声明实现的协议)后,Xcode停止了不良行为。此外,我应该指出,由于协议方法已经被实现,所以项目确实执行正确。只是Xcode无法确认该协议是否应该由类实现。


2

2022 | 如何解决算法问题:

  1. 打开“活动监视器”并结束com.apple.dt.SKAgent进程。

如果上述方法不起作用:

  1. 关闭 Xcode(cmd+Q),在终端中运行以下命令:

rm -rf ~/Library/Developer/Xcode/DerivedData


如果上述方法不起作用:

  1. 重启电脑。

如果上述方法不起作用:

  1. 右键点击你的项目名.xcworkspace,选择“显示包内容”,并删除“xcuserdata”文件夹。


如果上述方法不起作用:

  1. 以增加警告方式构建项目。使用以下命令:

    -Xfrontend -warn-long-expression-type-checking=100

    将其添加到如下位置:

enter image description here

并优化所有代码。


如果上述方法不起作用:

Z. 卸载 XCode 并重新安装


如果上述方法不起作用:

Z+1. El Belga的回答:https://dev59.com/5GYr5IYBdhLWcg3wQH--#50541767


2

我正在使用Xcode 11.4.1,并且在几个项目中遇到了同样的问题。每当失去网络连接时,索引就会上升。最好的解决方案(这只是基于观察此问题的我的意见):

- 关闭互联网并杀死“com.apple....”进程,然后重新启动Xcode(打开连接)

或更容易的方法

- 只需重启Mac(与互联网连接)


1
在Xcode 6.4中遇到类似的问题。进度条指示“索引”已“暂停”。尝试删除project.xcworkspace,然后按上述方法删除衍生数据,但好像没有帮助。注意到上面的帖子也建议修复警告,由于我继承了这个包含180个警告的庞大项目,于是我对自己说,“去修复警告,这看起来像是一个好日子”。当我正在修复警告时,半个小时后,我注意到“索引”进度条已从10%增加到约20%。一个小时后,它达到了50%,然后又过了一个小时到80%,再过半个小时就完成了! 结论:将“午餐时间或小睡一会”添加到上述建议中。

我认为这是我最后的选择。 - Rishab

1

我在 Xcode 7.0 beta 中遇到了同样的问题。在我的情况中,“Build Settings” 中“Provisioning Profile” 和“Product bundle identifier”的值在“PROJECT”和“TARGETS”之间有所不同。我为它们设置了相同的值。并且我还将“appName”和“appNameTest”的 TARGETS 使用了相同的值。然后关闭了项目并重新打开。这解决了我的问题。


1
在我的情况下,删除派生数据目录没有帮助。显然我有一个被另一个进程锁定的文件,因为在关闭几个终端窗口和emacs以及终止react-native打包程序之后,一切都解决了。

我也遇到了同样的问题,之前中断了一个Carthage重建。显然,并没有所有的进程都停止运行,因此我猜有些文件仍在使用中。关闭终端并关闭重新打开XCode就解决了问题。 - CyberDude

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接