【问题标题】:xcode 8 "Command failed due to signal: Segmentation fault: 11"xcode 8“由于信号而导致命令失败:分段错误:11”
【发布时间】:2017-02-06 12:12:15
【问题描述】:

我将我的 Xcode 更新到 Xcode 8 并接受了所有更新,但我收到一条错误消息,告诉我 "Command failed due to signal: Segmentation fault: 11"

请注意,我知道这个问题非常接近这个问题:

Xcode 7 compile error : "Command failed due to signal: Segmentation fault: 11"

还要注意我正在使用解析服务器,我怀疑它与它有什么关系,但我想我会提到它以防万一。

但它没有解决我的问题,有人遇到过这个问题/解决了吗?

谢谢!

【问题讨论】:

  • 尝试cmd+alt+k 清理构建缓存
  • @ÖzgürErsil 我试过了,它回来了
  • 这是因为您使用的第三方 pod,请在清理构建缓存后尝试 pod update
  • 当我的项目遇到很多错误并且无法应对时,我往往会发生这种情况。如其他地方所述,迁移助手不会为您完成所有工作,您的代码可能会遇到很多问题来修复新语法。除了@Ozgur Ersil 的建议之外,您可能还会发现将“-Xfrontend -debug-time-function-bodies”添加到 Swift Compiler - Custom Flags 的其他标志部分很有用,它告诉您每个代码部分需要多长时间编译。除了关于字典和数组的广为宣传的问题外,还要注意闭包周围的瓶颈。

标签: swift xcode parsing


【解决方案1】:

我们遇到了同样的问题。这个答案确实解决了我们的问题: Swift compiler segmentation fault when building

在 if 语句中使用它们之前,您必须先解开所有选项。

【讨论】:

  • 这似乎不是这里的问题,我检查了我的代码,看起来不错,我什至没有在特定行得到错误,当我尝试时它给出了错误编译
  • 我们也只在编译代码时遇到了错误。但是,如果您之前确实打开了所有选项,那么情况似乎并非如此。但是你的项目中有objective-c 代码吗?随着新的 Xcode 版本,一些 Objective-c 函数现在返回你在 Xcode 中看不到的选项
  • 我只在我的项目中使用 swift 所以这不是问题
  • 对我来说不是完全相同的问题,但也与可选项有关
【解决方案2】:

出现此错误的代码

let fileManager = FileManager.default
let fileAttributes = try! fileManager.attributesOfItem(atPath: OSWConfig.documentsPath.appendingPathComponent(folderName) as String) as NSDictionary

//below code cause the error

let createDate = fileAttributes.object(forKey: FileAttributeKey.creationDate)! as! NSDate

正确的代码没有错误

let keysList = fileAttributes.allKeys as! [FileAttributeKey]

let valuesList = fileAttributes.allValues

let indexCreateDate = keysList.index(of: FileAttributeKey.creationDate)! as Int

var createDate: NSDate!
if indexCreateDate >= 0 {
    createDate = valuesList[indexCreateDate] as! NSDate

}

这解决了我的问题。

【讨论】:

    【解决方案3】:

    这是 Xcode 的一个动态问题,但可以通过以某种方式修改您自己的代码来解决。当我将代码从 Swift2.3 迁移到 Swift3.1 时发生在我身上

    在我的情况下,错误出现在方法定义中,并且该方法作为 UIButton 的 @IBAction 附加。

    @IBAction func changeButtonTapped(_ sender: AnyObject) {
        // some code
    }
    

    将上面的代码更改为以下代码为我解决了段错误问题。

    @IBAction func changeButtonTapped(_ sender: Any) {
        // some code
    }
    

    编辑1: 这种分段错误的另一个案例出现了。

    这一次是由于在更高范围内重新声明了一个变量并在同一个 if 语句中使用 示例代码:

    // 'var1' is defined in higher scope
    func someFunction() {
        if let var2 = var1,
           let var1 = someValue {
            // some code
        }
    }
    

    Xcode 对使用哪个“var1”命名变量来定义 var2 感到困惑。 将名称更改为其他名称将解决 seg-fault。

    【讨论】:

      【解决方案4】:

      最可能的原因是 XCode 没有发现编码错误,因为它的内置分析已经崩溃/没有跟上。只需重新启动 XCode 即可显示代码中的错误位置。

      【讨论】:

        【解决方案5】:

        在我的情况下,错误发生在与此类似的代码中:

        class AClass {
            var url: String?
        
            func aMethod() {
                guard let urlString = url, let url = URL(string: urlString) else {
                    // Use `url`
                }
            }
        }
        

        原因:

        url 是一个可选的 instance var,我将其解包到自身中,这似乎会使 Swift 编译器崩溃。

        定位问题:

        有趣并且可能会提示您有问题的代码位于何处,是(至少在我的情况下)Xcode 编辑器也会在您编写代码时崩溃: p>

        解决方案:

        在我的例子中,我只需要将可选实例 var 解包到另一个变量中而不是它本身(这首先是愚蠢的......)。 例如:

        class AClass {
            var url: String?
        
            func aMethod() {
                guard let urlString = url, let actualUrl = URL(string: urlString) else {
                    // Use `actualUrl`
                }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-18
          • 1970-01-01
          • 2015-02-20
          • 1970-01-01
          • 1970-01-01
          • 2015-12-15
          • 2017-06-23
          • 1970-01-01
          相关资源
          最近更新 更多