Abort Trap:新Swift 3.1 / Xcode 8.3中出现6个错误

时间:2017-04-01 00:36:08

标签: ios swift xcode debugging

我有一个完成的项目,大约30vcs,Firebase,Googlemaps集成等 - 这是一个非常复杂的项目,它是一个基于地理定位的游戏,我终于在几个月的工作后完成了。

工作和编译得很好,直到我尝试在新的Swift 3.1 / Xcode 8.3中编译它。

在几行上更改推荐语法以清除新的XCODE 8.3错误后,编译失败并显示“Abort Trap:6”错误。

这是调试器的最后几行(在此之前还有大约100行不可理解的文件名/数字等)。

  

0 swift 0x00000001089f1eb7   PrintStackTraceSignalHandler(void *)+ 39 1 swift
  0x00000001089f1366 SignalHandler(int)+ 646 2   libsystem_platform.dylib 0x00007fffc602eb3a _sigtramp + 26 3   libsystem_platform.dylib 0x0000000100000001 _sigtramp + 972887265 4   libsystem_c.dylib 0x00007fffc5eb3420 abort + 129 5 swift
  0x0000000106454644   SWIFT :: ModuleFile :: getDecl(LLVM :: PointerEmbeddedInt,   llvm ::可选)+ 38404 6 swift
  0x00000001064564fa   SWIFT :: ModuleFile ::的getType(LLVM :: PointerEmbeddedInt)   + 2106 7 swift 0x000000010644f373 swift :: ModuleFile :: getDecl(llvm :: PointerEmbeddedInt,   llvm ::可选)+ 17203 8 swift
  0x0000000106459f24   swift :: ModuleFile :: maybeReadPattern(swift :: DeclContext *)+ 740 9   swift 0x000000010644f605   SWIFT :: ModuleFile :: getDecl(LLVM :: PointerEmbeddedInt,   llvm ::可选)+ 17861 10 swift
  0x00000001064607c8 swift :: ModuleFile :: loadAllMembers(swift :: Decl *,   unsigned long long)+ 600 11 swift
  0x0000000106840f0d swift :: NominalTypeDecl :: getMembers()const + 125 12   swift 0x0000000106828c75(匿名   namespace):: Traversal :: visitNominalTypeDecl(swift :: NominalTypeDecl *)+   869 13 swift 0x0000000106826645(匿名   namespace):: Traversal :: doIt(swift :: Decl *)+ 277 14 swift
  0x000000010619a75f   SWIFT :: SILPassManager :: SILPassManager(SWIFT :: SILModule *   llvm :: StringRef)+ 1471 15 swift 0x00000001061a135f   swift :: runSILDiagnosticPasses(swift :: SILModule&)+ 159 16 swift
  0x0000000105811282 swift :: performFrontend(llvm :: ArrayRef,   char const *,void *,swift :: FrontendObserver *)+ 42866 17 swift
  0x00000001057c088c main + 9052 18 libdyld.dylib
  0x00007fffc5e1f235 start + 1堆栈转储:

(这里有大约150行难以理解的调试数据/文件/字母数字 - 最后是这个):

  
      
  1. 在模块'googleMapsPractice'中加载'homePage'的成员      
        
    1. 在'googleMapsPractice'中反序列化PatternBindingDecl#295
    2.   
    3. 在'googleMapsPractice'中反序列化'gameDBRef'(VarDecl#296)
    4.   
    5. 在'googleMapsPractice'中反序列化#1009(XREF)时,
    6.   
    7. 交叉引用模块'FirebaseDatabase'... FIRDatabaseReference
    8.   
  2.   

我真的被卡住,因为我不知道在哪里调试这个。

'homePage.swift'是游戏的设置页面VC,是调试器中唯一引用的VC,是否有任何常见的解决方案可以尝试在这个VC上清除Abort Trap 6错误?它可能是2000行代码,我甚至不确定问题在于VC作为调试器是如此模糊。

非常感谢任何帮助

7 个答案:

答案 0 :(得分:2)

这件事发生在我身上,因为我在主要private enumclass中都有extension。这两个都在同一个文件中。整蛊一个!

答案 1 :(得分:1)

就我而言,似乎是由于本地项目计划缺少,我的应用程序中的构建阶段试图链接到项目。

答案 2 :(得分:1)

我遇到了同样的问题。我终于发现它是由于压倒性的描述而引起的。在任何继承自NSObject的类上。我注意到在Swift 3.1中有一个'类功能描述()'在NSObject上我不一定记得在Swift 3.0中(尽管我很容易在这个假设中弄错;我从来没有任何寻找或使用它)。另请参阅https://forums.developer.apple.com/thread/75700

答案 3 :(得分:1)

我遇到了错误,因为我的班级名称不同于文件名。修改了文件名,一切正常,然后

答案 4 :(得分:1)

在我的情况下是因为我放了一个!对象的init方法中的符号。像这样:

init(obj1: Object1, obj2: Object2!) {

}

删除!函数参数,没有错误。

答案 5 :(得分:0)

我对Swift类有类似的问题,这些类具有来自React的RCTRootView类型的属性。我通过将属性设为私有来修复它,如下所示:

class MyViewController: UIViewController {
  var rctView: RCTRootView()
}

变成这样:

class MyViewController: UIViewController {
  private var rctView: RCTRootView()
}

似乎错误在于尝试在编译时过早反序列化来自其他模块/框架的类(在您的情况下为FirebaseDatabase,在我的情况下为React)。将这个属性设为私有可以使编译器在以后的编译中不需要这样做。如果我不得不猜测,看来我们正在彻底解决一些依赖/构建订单问题。

答案 6 :(得分:0)

我通过在模拟器中切换到其他设备来解决此问题-然后编译并运行正常。

然后,当我回到以前的设备时,它也可以正常工作。

我没有解释!