【问题标题】:Xcode 8 random command failed due to signal segmentation fault 11Xcode 8 随机命令因信号分段错误而失败 11
【发布时间】:2017-01-23 04:17:44
【问题描述】:

我对新的 Xcode 8(无测试版)和 swift3 有一个奇怪的问题。

每隔 3-4 次我编译我的代码就会收到“由于信号分段错误 11 导致命令失败”错误。我只需要输入新的空行,或者有时更改一些空格,或者添加注释(代码中的任何地方),错误就会消失,我可以再次编译。 这真的很奇怪,因为我没有更改代码中的任何内容!有时我可以编译并且它可以工作,然后我什么都不做,我再次编译,我得到了错误。 这真的很烦人!

我注意到这种情况正在发生,因为我安装了几个“Firebase”吊舱(Firebase、Firebase/Auth 等...)。但我需要它们。

有人有什么建议吗?

PS:我已将我的项目的 Enable Bitcode 设置为 No 与建议的解决方案一样多,但没有。在错误消息中没有指出任何可能出现错误的快速页面,例如:

  1. 在为 'Class_name' 加载成员时,
  2. 在反序列化“func_name”时(FuncDecl #42)

'func_name'是这个:

public class func loginUser(fir_user: FIRUser) {
    let user = SFUser()
    user.email = fir_user.email 
    user.isLogged = true
    try! sfRealm.write() {
        sfRealm.add(user, update:true)
    }

    var userToAdd = [String:AnyObject]()
    userToAdd["email"] = fir_user.email! as NSString

    let ref=FIRDatabase.database().reference()
    let usersRef = ref.child(childName)
    usersRef.setValue([key:value])
}

但是,正如我所说,我可以在另一个文件中输入一个空行并编译!

谢谢

【问题讨论】:

  • 很高兴知道这种错误在 XCode8 上仍然存在 ... :(
  • 如果你卸载这些 pod,你是否仍然收到错误消息(如果你编译 3-4 次)?
  • @Andrea 请发布您找到的解决方案作为答案,因为您的问题似乎已解决。
  • @Dev-iL 谢谢,刚刚完成 :)
  • 这可能会有所帮助:stackoverflow.com/questions/32645533/…

标签: swift xcode firebase segmentation-fault swift3


【解决方案1】:

好的,看来我找到了解决方案:这是Firebase和cocoapods的问题,所以2个解决方案:

下载 Firebase 并导入到您的项目中

相反,我将 cocoapods 更新到了最新版本,并且成功了。升级后的 Firebase - 现在出现 Swift 编译错误

【讨论】:

  • 我收到了这个错误,而且我从来没有使用过 cocoapods(对我不好?)所以虽然 cocoapods 的问题可能会导致这个错误,但如果没有 cocoapods 也会发生这种情况。
【解决方案2】:

在我的情况下,编译器深处存在一些类型检查问题,因此编辑器没有在装订线中给出错误,但在构建项目时,我收到了信号设置错误 11 错误:

1.  While type-checking 'GetStoreAPIRequestModel' at /Users/.../StoreAPIModel.swift:9:1
2.  While type-checking expression at [/Users/.../StoreAPIModel.swift:15:18 - line:15:31] RangeText="[Dictionary]()"
3.  While resolving type [Dictionary] at [/Users/.../StoreAPIModel.swift:15:18 - line:15:29] RangeText="[Dictionary]"

所以我改变了我的代码:

var stores = [Dictionary]() {
        willSet {
            allStores.removeAll()

            for model in newValue {
                allStores.append(StoreAPIModel(dictionary: model as! Dictionary).getModel())
            }
        }
    }

收件人(更具描述性的字典):

var stores = [[String : Any]]() {
        willSet {
            allStores.removeAll()

            for model in newValue {
                allStores.append(StoreAPIModel(dictionary: model as [String : AnyObject]).getModel())
            }
        }
    }

【讨论】:

  • 构建失败后,您在哪里找到显示的 1/2/3 消息?
【解决方案3】:

这是一个棘手的问题。问题可能与代码行或语法有关。我遇到了类似的错误,这是由于字典使用不正确。我试图增加字典元素的值。

解决方案是对代码进行分类,详细的错误提供哪个模块有问题,因此请尝试注释部分代码,直到找到导致问题的行。

【讨论】:

    【解决方案4】:

    您好,我在 FireBase 上遇到了同样的问题,我的问题是我正在扩展 FIRStorageReferenceFIRDatabaseReference,有时它编译成功,有时我得到了

    由于信号分段错误 11 命令失败

    所以我删除了这些文件并以其他方式实现该方法,现在一切正常。

    【讨论】:

      【解决方案5】:

      发生这种情况时发现了我的问题。 (没有 cocoapods。)我以为我已经让程序处于工作状态,但我错了。我正在编写一个简单的命令行程序。它的作用有点笼统,所以我在程序顶部的let 语句中定义了使其具体化的所有字符串,以便有一天我可以在不同的上下文中使用该程序。

      既然这样效果很好,我想我会很聪明,对一系列字典的过滤器做同样的事情。我转身:

      list.filter { $0["SearchStrings"] == nil }
      

      进入:

      let test = { $0["SearchStrings"] == nil }
      // ...
      list.filter(test)
      

      打算继续在let 上工作,但我再也没有回去做过。建筑给了我分段错误错误。将test 定义为函数解决了这个问题。

      (顺便说一句,我了解如何在调用Array.filter 的上下文中将过滤函数剥离为简洁的大括号符号,以及为什么会这样,但我不明白为什么我不能分配大括号将表达式转换为常量并照此使用。)

      【讨论】:

        【解决方案6】:

        我有同样的问题,我只是发现我使用的是 xcode 8.1,而项目的工作副本在 xcode 8.2.1 中,所以我只需重新安装 xcode 8.2.1,问题就解决了。希望其他人能通过这个得到帮助。

        【讨论】:

        • 我也尝试重新安装 xcode 8.2.1,当我刚刚打开项目时它工作正常,但是在编码几分钟后它开始显示此错误并且整个代码编辑器的字体变成黑色(我意味着代码编辑器无法识别/识别那些语法)。
        • @Vats 好吧,我同意这一点,但有时 pc 重启或 xcode 重启可以解决问题。但在更换之后我还没有遇到这个问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-06
        • 1970-01-01
        • 1970-01-01
        • 2023-03-13
        • 2015-12-18
        相关资源
        最近更新 更多