无法执行命令:分段错误:11 swift前端命令因信号失败(使用-v查看调用)

时间:2014-07-29 03:21:25

标签: ios xcode segmentation-fault swift

我有一个iOS swift程序,可以在Xcode Beta2上编译和运行。当我下载beta4时,我纠正了新的快速语言的一些语法错误。我现在得到这个错误:

<unknown>:0: error: unable to execute command: Segmentation fault: 11
<unknown>:0: error: swift frontend command failed due to signal (use -v to see invocation)

问题是它没有告诉我这个错误在哪里,所以我可以进一步解决它。我在哪里可以键入-v以“查看调用”并进一步排除故障?没有这个,绝对没有办法找出问题所在。提前谢谢。

21 个答案:

答案 0 :(得分:31)

以下是我如何找出问题所在:

  1. 点击问题导航器中的问题(⌘+ 4,然后点击红色的第一行!)
  2. 在显示的文件的底部,应该有一行代码如下:
  3. 1. While emitting IR SIL function @_TToZFC4Down8Resource12getInstancesfMS0_U__FTSS6paramsGVSs10DictionarySSPSs9AnyObject__9onSuccessGSqFGSaQ__T__7onErrorGSqFT5errorCSo7NSError8responseGSqCSo17NSHTTPURLResponse__T___T_ for 'getInstances' at /path/to/file.swift:112:5

    1. 发生错误的位置位于该行的末尾。 (在这种情况下,在getInstances中的file.swift的第112行)。

答案 1 :(得分:19)

我试图将PayPal框架添加到我的iOS项目(Xcode 7.2和Objective C语言)。在构建它时没有抛出任何错误,但当我尝试归档项目并进行IPA时,我收到了该错误

  

无法执行命令:分段错误:11

截图:

enter image description here

经过长时间的挣扎,我在Project's Target > Build Settings > Enable Bitcode中禁用了Bitcode。现在该项目可以存档。请查看以下屏幕截图。

enter image description here

答案 2 :(得分:8)

真的无法直接解决此问题(虽然我确定它是Apple的错误),但我只是遇到了完全相同的错误消息并碰巧解决了这个问题。这就是我的所作所为:

一般

  1. 评论最近更改了Swift代码(检查提交),直到应用程序再次编译
  2. 按住Command键并单击失败行中的每个被调用方法,并检查是否存在歧义
  3. 我的示例

    在我的情况下(我使用Objective-C中编写的XMPPFramework)失败的代码如下所示:

    for roomMessage: XMPPRoomMessage in self.messages {
        let slices = split(roomMessage.nickname(), { $0 == "_" }, allowEmptySlices: false)
    }
    

    roomMessage.nickname()替换为"0_test"代码后,代码不再失败。所以我命令点击方法nickname()(两次),这就是我所看到的:

    enter image description here

    我的猜测是,如果对象的确切类型不清楚,Swift 1.1编译器在确定调用哪个方法时会遇到问题。所以我使用类型的roomMessage显式并得到了另一个错误,我通过移除nickname()方法调用后面的大括号来解决这个问题。 这使我的应用再次构建。以下是工作代码:

    for roomMessage: XMPPRoomMessageCoreDataStorageObject in self.messages {
        let slices = split(roomMessage.nickname, { $0 == "_" }, allowEmptySlices: false)
    }
    

    我希望这可以帮助那些人比我更快地调查这个问题。

答案 3 :(得分:4)

在我的情况下这个错误,因为我使用类名称变量

var MYClass : MYClass {
    get {
        return.....
    }
}

这解决了我的问题

var myClass : MYClass {
    get {
        return.....
    }
}

答案 4 :(得分:4)

我也有同样的问题,

  1. 当我清理派生数据时
  2. 也从“废纸篓”中删除所有已删除的衍生数据。
  3. 停止Xcode,重新启动它并清理构建
  4. 现在应该修复。

答案 5 :(得分:3)

我的问题是我试图用所谓的模块方法(模块设计模式)来模仿静态变量。所以,我有类似的东西(只是对swift文件级别声明的操作队列的简单静态引用):

let globalQueue: NSOperationQueue = {
    let queue = NSOperationQueue()
    queue.suspended = false
    queue.maxConcurrentOperationCount = NSOperationQueueDefaultMaxConcurrentOperationCount
    return queue
}()

所以,这在Xcode 6.x.x中运行良好,但在Xcode 7beta中停止编译。只是想让你们意识到这一点。 附:一般来说,我设法从日志中找出出了什么问题(参见附页截图)。 希望这可以为您节省一些时间。 enter image description here

答案 6 :(得分:2)

当我将协议功能调用为相同的协议扩展时,我遇到了分段错误。

我的代码中有一些代码:

protocol Rotatable {
    func rotate() -> Self
}

extension Rotatable {
    func rotate(steps: Int) {
        for _ 0..<steps { self.rotate() }
    }
}

当我后来创建一个对象并声明它将遵循Rotatable协议时,我得到了Segmentation fault 11并且程序崩溃了。

Ex:这会导致分段错误并导致Xcode崩溃

struct SomeStruct : Rotatable {

}

如果我首先在SomeStruct中实现了函数rotate(),然后声明它符合Rotatable那里没有问题。

答案 7 :(得分:1)

Swift 5 非常简单流畅的解决方案

1-    Just check your last added Extension / Code / Folder File before then this issue occur
2-    Just Commit the code or save that code 
3-    Clean and Build & DONE :-) 

Happy Coding

答案 8 :(得分:1)

今天我有一个类似的,并尝试了这里描述的步骤,包括删除我最近修改过的文件。似乎没什么用。当SourceKit在Xcode中崩溃时,我尝试了一些建议。

我进入派生数据目录并删除了所有内容。该位置列在“首选项 - &gt;位置 - &gt;派生数据”下方路径旁边有一个箭头图标,用于打开查找器并选择该目录。选择里面的所有目录并删除它们。关闭Xcode并重新打开它。这让我的问题消失了。

我认为某些中间文件已损坏,编译器不知道如何处理它。

答案 9 :(得分:1)

我收到这个错误是因为一个愚蠢的错误!

在我定义的课程中

var url: String!?

:)

所以看起来这个描述是一个多重&amp;一般错误有很多原因!!

答案 10 :(得分:0)

我忘了在@end之后的@implementation文件中添加一个.m,其中包含多个classes。类似的东西:

@implementation Adjust

@end

@implementation Data //@end For this class was missing 


@implementation Create

@end

答案 11 :(得分:0)

我在构建一些未适应最新 Swift 版本的遗留代码时遇到了这个问题。

Segmentation fault: 11

当您打开 Report navigator 时,它包含一些上下文,例如:

1.  Apple Swift version 5.3.2 (swiftlang-1200.0.45 clang-1200.0.32.28)
2.  While evaluating request IRGenSourceFileRequest(IR Generation for file "/Users/alex/Downloads/NSURLProtocolExample-Swift_complete/NSURLProtocolExample/AppDelegate.swift")
3.  While emitting IR SIL function "@$s20NSURLProtocolExample11AppDelegateC11applicationAD29didFinishLaunchingWithOptionsSbSo13UIApplicationC_So12NSDictionaryCSgtF".
 for 'application(application:didFinishLaunchingWithOptions:)' (at /Users/alex/Downloads/NSURLProtocolExample-Swift_complete/NSURLProtocolExample/AppDelegate.swift:17:3)
0  swift                    0x000000010b2d3615 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 37
1  swift                    0x000000010b2d2615 llvm::sys::RunSignalHandlers() + 85
2  swift                    0x000000010b2d3bcf SignalHandler(int) + 111
3  libsystem_platform.dylib 0x00007fff2039bd7d _sigtramp + 29
...

解决这个问题:

  1. 注释尖线(AppDelegate.swift 中的第 17 行)
  2. 构建并修复所有其他问题
  3. 取消第 1 步中的注释行

答案 12 :(得分:0)

愚蠢的错误。我在Class方法中提到了self:

public class func FunctionName() -> UIImage {        
    let bundle = Bundle.init(for: type(of: self))
    ...
}

答案 13 :(得分:0)

对我来说,这类似于@LuisCien在此答案中描述的https://stackoverflow.com/a/42803582/4075379

我没有任何泛型或@objc标记,但是正是这些代码行导致了分段错误:

public extension CGFloat {
    /// Whether this number is between `other - tolerance` and `other + tolerance`
    func isEqual(to other: CGFloat, tolerance: CGFloat) -> Bool {
        return (other - tolerance...other + tolerance).contains(self)
    }
}

即主要是Objective-C主要类型的扩展? 幸运的是,我能够删除这些行,因为该项目不再使用。解决了这个问题。

答案 14 :(得分:0)

就我而言,这是因为函数参数中的inout不合适。因此,我建议您也寻找该位置。

答案 15 :(得分:0)

我的问题出在方法签名上:

func setCategory(categoryId: Int?, subcategoryId: Int?) -> FilterSettings {

func changeCategory(categoryId: Int?, subcategoryId: Int?, handler: @escaping (Int) -> ()) {

我不明白为什么编译器无法处理此类声明。

答案 16 :(得分:0)

对我来说问题是混合GenericsExtensions@objc

事实证明,Xcode并不喜欢在通用类的扩展内部使用@objc

class FaultyClass<T: TypeValidator>: UIControl where T.ItemType == String {
}

extension FaultyClass: UITextFieldDelegate {
    func textFieldDidEndEditing(_ textField: UITextField) {
    }
}

上面的代码给出了错误@objc is not supported within extensions of generic classes。所以我将方法移到了类本身,但没有删除空扩展。这消除了错误,但是当我编译项目时,我得到了分段错误

解决方案是将UITextFieldDelegate移动到类声明。

class GoodClass: <T: TypeValidator>: UIControl, UITextFieldDelegate where T.ItemType == String {

// MARK: - TextFieldDelegate
    func textFieldDidEndEditing(_ textField: UITextField) {
    }
}

答案 17 :(得分:0)

我因为行

而得到了这个错误

self.textView.inputAccessoryView = self.toolbarItems;

如果删除它,错误就会消失。

我的步骤: 1)

  1. 已删除派生数据
  2. 清除构建文件夹没有帮助
  3. 将类文件复制到另一个文件夹作为备份,并在此类中注释所有内容。错误消失了。
  4. 评论代码一个接一个地阻塞,直到 建设成功了。
  5. enter image description here

答案 18 :(得分:0)

对我来说,这是因为将swift文件添加到不同的目标(在我的情况下是今天的扩展名)。

答案 19 :(得分:0)

我在&#34; Swift compiler segmentation fault when building&#34;

我也有这个错误,我这样修好:

检查您的项目,找出哪些文件正在使用两次并删除一个,或删除所有文件并重新添加。

我的xCode中的错误

:0:错误:文件名&#34; AttributedString.swift&#34;使用过两次:&#39; / Users /.../ CNJOB / CNJOB / AttributedString.swift&#39;和&#39; / Users /.../ CNJOB / CNJOB / AttributedString.swift&#39;

:0:注意:文件名用于区分具有相同名称的私有声明

:0:错误:文件名&#34; APIClient.swift&#34;使用过两次:&#39; / Users /.../ CNJOB / CNJOB / APIClient.swift&#39;和&#39; / Users /.../ CNJOB / CNJOB / APIClient.swift&#39;

:0:注意:文件名用于区分具有相同名称的私有声明

Command / Applications / Xcode 3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc以退出代码1失败

答案 20 :(得分:-4)

从beta2切换到beta4时遇到了类似的问题。我希望这些说明有用。

<强>清洁

然后

<强>构建