【问题标题】:How do I restore indexing functionality? (Xcode)如何恢复索引功能? (Xcode)
【发布时间】:2016-01-30 15:56:11
【问题描述】:

我的一个项目(包含 200 多个纯 Swift 文件)最近刚刚开始干扰索引过程。索引过程中途冻结然后突然停止,导致SourceKitService 崩溃。

我根本找不到错误代码;因为似乎没有!

我的代码编译得很好(没有任何警告!) - 但它未能被索引。最初,我认为这是 Xcode 7.2 的问题,因此升级到最新的 beta (7.3);但是问题仍然存在。我无法恢复到我的旧代码,因为太多的工作将被撤消,而且我无法找到一个特定的文件来指责。崩溃报告是here

为了澄清,Xcode 本身不会崩溃,只有索引过程(和SourceKitService 结果)。

关于如何解决此问题的任何想法?

【问题讨论】:

  • 我想你做到了,但以防万一你没有:“清理项目 + 清理派生数据”可能会有所帮助。
  • @EricD.:我已经试过了。
  • 总是有锤子:删除~/Library/Caches/com.apple.dt.Xcode/通常可以解决此类问题,但它也会重置一些首选项和数据库,因此可能会产生麻烦的副作用,请注意(首先制作一个 TimeMachine 副本或其他东西)。
  • @EricD.:去过那里,做到了。
  • 查看您的项目历史并找到导致此问题的提交。

标签: xcode swift sourcekit


【解决方案1】:

从 .xcodeproj 中删除“xcuserdata”(右键单击 .xcodeproj > 选择显示包内容。这应该可以解决问题。

【讨论】:

  • 这成功了!非常感谢!如果您不介意我问,您在哪里找到此解决方案?
  • 其实我也有类似的问题。我发现所有元信息都存储在“xcuserdata”中。我冒着风险将其移除,并且有魔法:-)
  • 呃哦,我说得太早了。 SourceKitService 再次崩溃 :(
  • 看起来这是一个无关的问题。索引工作正常,所以我接受这个答案。
【解决方案2】:

如果我阅读正确, 问题出在这部分过程:

Thread 8 Crashed:
0   com.apple.SourceKitService      0x000000010450d9fc swift::TypeBase::getDesugaredType() + 12
1   com.apple.SourceKitService      0x00000001043bccbe (anonymous namespace)::DeclChecker::checkDynamicSelfReturn(swift::FuncDecl*, swift::TypeRepr*, unsigned int) + 478
2   com.apple.SourceKitService      0x00000001043b7c08 (anonymous namespace)::DeclChecker::visitFuncDecl(swift::FuncDecl*) + 1432
3   com.apple.SourceKitService      0x00000001043acc0d (anonymous namespace)::DeclChecker::visit(swift::Decl*) + 2733
4   com.apple.SourceKitService      0x00000001043a7ea7 swift::TypeChecker::validateDecl(swift::ValueDecl*, bool) + 727
5   com.apple.SourceKitService      0x00000001043b6426 (anonymous namespace)::DeclChecker::visitSubscriptDecl(swift::SubscriptDecl*) + 1478
6   com.apple.SourceKitService      0x00000001043acbdd (anonymous namespace)::DeclChecker::visit(swift::Decl*) + 2685
7   com.apple.SourceKitService      0x00000001043a7ea7 swift::TypeChecker::validateDecl(swift::ValueDecl*, bool) + 727
8   com.apple.SourceKitService      0x00000001044fc003 swift::DeclContext::lookupQualified(swift::Type, swift::DeclName, unsigned int, swift::LazyResolver*, llvm::SmallVectorImpl<swift::ValueDecl*>&) const + 3075
9   com.apple.SourceKitService      0x00000001043c7a7c swift::TypeChecker::lookupMember(swift::DeclContext*, swift::Type, swift::DeclName, swift::OptionSet<swift::NameLookupFlags, unsigned int>) + 556
10  com.apple.SourceKitService      0x00000001043d51b7 (anonymous namespace)::ConformanceChecker::lookupValueWitnesses(swift::ValueDecl*, bool*) + 359
11  com.apple.SourceKitService      0x00000001043d11a1 (anonymous namespace)::ConformanceChecker::resolveWitnessViaLookup(swift::ValueDecl*) + 401
12  com.apple.SourceKitService      0x00000001043ce86f swift::TypeChecker::checkConformance(swift::NormalProtocolConformance*) + 2255
13  com.apple.SourceKitService      0x000000010438011b typeCheckFunctionsAndExternalDecls(swift::TypeChecker&) + 1099
14  com.apple.SourceKitService      0x00000001043809e5 swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int) + 1781
15  com.apple.SourceKitService      0x0000000103fa40c2 swift::CompilerInstance::performSema() + 4738
16  com.apple.SourceKitService      0x0000000103e9a836 SourceKit::SwiftLangSupport::indexSource(llvm::StringRef, SourceKit::IndexingConsumer&, llvm::ArrayRef<char const*>, llvm::StringRef) + 4262
17  com.apple.SourceKitService      0x0000000103eb086a void SourceKit::WorkQueue::DispatchData::callAndDelete<handleRequestImpl(void*, std::__1::function<void (void*)>)::$_2>(void*) + 2170
18  libdispatch.dylib               0x00007fff9b7de33f _dispatch_client_callout + 8
19  libdispatch.dylib               0x00007fff9b7ec03a _dispatch_block_invoke + 474
20  com.apple.SourceKitService      0x00000001056afbbf executeBlock(void*) + 15
21  com.apple.SourceKitService      0x0000000103f3e58d ExecuteOnThread_Dispatch(void*) + 13
22  libsystem_pthread.dylib         0x00007fff8be14c13 _pthread_body + 131
23  libsystem_pthread.dylib         0x00007fff8be14b90 _pthread_start + 168
24  libsystem_pthread.dylib         0x00007fff8be12375 thread_start + 13

这导致我们:

https://github.com/apple/swift/pull/932/files

20 天前

所以我猜这是一个已知问题。 但是我不知道是什么原因造成的。我很确定这是一种尚未得到很好支持的 swift 代码样式。

我还在这个 Crash 测试项目中发现了你的崩溃:

https://github.com/practicalswift/swift-compiler-crashes

如果您仔细研究一下,您可能会找到触发其中一种崩溃的确切情况:

  • ✓ 28197 swift typebase getdesugaredtype
  • ✓ 28200 swift typebase getdesugaredtype
  • ✓ 28203 swift typebase getdesugaredtype

【讨论】:

  • 不行,找不到错误代码。但我很高兴听到它已在最新的测试版中修复!
猜你喜欢
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多