无法执行命令:分段错误:11 swift frontend command failed due to signal(使用 -v 查看调用)

Posted

技术标签:

【中文标题】无法执行命令:分段错误:11 swift frontend command failed due to signal(使用 -v 查看调用)【英文标题】:unable to execute command: Segmentation fault: 11 swift frontend command failed due to signal (use -v to see invocation) 【发布时间】:2014-09-20 09:05:58 【问题描述】:

我有一个 ios swift 程序,可以在 Xcode Beta2 上编译和运行良好。当我下载 beta4 时,我得到了一些新的 swift 语言的语法错误,我已经更正了。我现在收到此错误:

<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 以“查看调用”并进一步排除故障?没有这个,就绝对没有办法找出问题所在。提前致谢。

【问题讨论】:

玩得开心删除代码并将它们添加回来 我不确定你的意思... 删除代码直到它再次工作。他们添加代码,直到它被破坏。现在您找到了错误的根源。 这是解决问题的蛮力方法 :p 关于在哪里键入 -v 以查看调用的任何想法?也许这可以帮助 您应该能够通过在 Xcode 中展开消息来查看编译器崩溃时的堆栈跟踪。这就是你能从中得到的一切。 【参考方案1】:

我在从 beta2 切换到 beta4 时遇到了类似的问题。

干净

然后

构建

【讨论】:

恕我直言,一个有经验的人总是在在 *** 上提问之前尝试清理他的项目。如果提出问题,解决问题并非易事。 相反,我经常忽略最简单(且正确)的解决方案,因为它们就是这么简单。【参考方案2】:

如果您将 Objective-C 代码移植到 Swift,并且将 Objective-C 协议迁移到 Swift,也会发生这种情况。如果您在协议定义中省略了@objc,并且仍然有使用该协议的 Objective-C 代码,则可能会出现此错误。

这种情况下的解决方案是将@objc 添加到协议中

protocol MyPortedProtocol 

更改为

@obcj protocol MyPortedProtocol 

还要确保任何实现此协议的类都将@objc 添加到方法中

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

我在构建一些不适合最新 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
...

解决这个问题:

    评论指出的行(AppDelegate.swift 中的第 17 行) 构建并修复所有其他问题 从第 1 步取消注释行

【讨论】:

【参考方案5】:

愚蠢的错误。我在 Class 方法中引用了 self:

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

【讨论】:

【参考方案6】:

对我来说,这类似于@LuisCien 在这个答案https://***.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 主要类型的扩展? 非常幸运的是,我能够删除这些行,因为该项目不再使用。这解决了问题。

【讨论】:

【参考方案7】:

在我的情况下,这是因为函数参数中的 inout 不合适。所以我建议你也去寻找它。

【讨论】:

【参考方案8】:

我的问题在于方法签名:

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

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

我不明白为什么编译器不能处理这样的声明。

【讨论】:

【参考方案9】:

我也遇到了同样的问题,

    当我清理派生数据时 同时从垃圾箱中删除所有已删除的派生数据。 停止Xcode,重新启动它并清理构建

现在应该修复了。

【讨论】:

我只需要删除派生数据(第 1 步),它就为我解决了这个问题。 太棒了。 Xcode 10.0 有这个问题,甚至“清理构建文件夹...”都无法解决。 重启对我不起作用,但这有效!非常感谢。【参考方案10】:

对我来说,问题在于混合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。所以我将方法移到了类本身,但没有删除空扩展名。这消除了错误,但是当我编译项目时,我得到了 segmentation fault

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

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

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

【讨论】:

【参考方案11】:

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

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

截图:

苦苦挣扎了很久,我禁用了Project's Target &gt; Build Settings &gt; Enable Bitcode中的Bitcode。现在可以归档项目了。请检查以下屏幕截图。

【讨论】:

这对我来说绝对是正确的答案,我建议大家尝试一下。 这解决了我的问题。我能够构建但不能存档。这条信息块拯救了我的一天。谢谢 非常感谢。你救了我的一天!这会有其他影响吗? 不,我已经有使用该代码的实时应用程序。顺便说一句,如果该答案对您有帮助,请将其作为已接受的答案。 我设置为“否”,所以我切换到“是” - 尝试构建但失败,切换回“否” - 构建成功。【参考方案12】:

因为线路,我得到了这个错误

self.textView.inputAccessoryView = self.toolbarItems;

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

我的步骤: 1)

    已删除派生数据 清除构建文件夹没有帮助 将类文件复制到另一个文件夹作为备份,并注释了该类中的所有内容。错误消失了。 将代码块一一注释,直到 构建成功。

【讨论】:

【参考方案13】:

当我用相同的协议扩展调用协议函数时,我遇到了分段错误。

我有一个与此相符的代码:

protocol Rotatable 
    func rotate() -> Self


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

当我后来创建一个对象并声明它将遵循可旋转协议时,我得到了分段错误 11,程序崩溃了。

例如:这会导致分段错误和 Xcode 崩溃

struct SomeStruct : Rotatable 


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

【讨论】:

您好,我在 Xcode 11 中遇到了同样的问题,并且似乎使用了旧库中的协议。你是怎么做到的?如何实现该功能?谢谢!【参考方案14】:

我忘记在.m 文件中的@implementation 之后添加一个@end,其中包含多个classes。比如:

@implementation Adjust

@end

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


@implementation Create

@end

【讨论】:

【参考方案15】:

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

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

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

【讨论】:

感谢您提供的答案,指导其他人在哪里寻找错误。【参考方案16】:

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

在我定义的类中

var url: String!?

:)

因此,由于很多原因,这个描述似乎是一个多重通用错误!

【讨论】:

【参考方案17】:

以下是我找出问题所在的方法:

    在问题导航器中单击问题(⌘ + 4,然后单击开头带有红色 ! 的行) 在出现的文件底部,应该有一行内容如下:

1. While emitting IR SIL function @_TToZFC4Down8Resource12getInstancesfMS0_U__FTSS6paramsGVSs10DictionarySSPSs9AnyObject__9onSuccessGSqFGSaQ__T__7onErrorGSqFT5errorCSo7NSError8responseGSqCSo17NSHTTPURLResponse__T___T_ for 'getInstances' at /path/to/file.swift:112:5

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

【讨论】:

谢谢。这给了我一个线索 这对找出从哪里开始很有帮助 这是搜索错误真正原因的正确答案。坦克【参考方案18】:

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

【讨论】:

【参考方案19】:

在我的例子中,这个错误是因为我使用类名作为变量

var MYClass : MYClass 
    get 
        return.....
    

这解决了我的问题

var myClass : MYClass 
    get 
        return.....
    

【讨论】:

【参考方案20】:

我今天遇到了类似情况,并尝试了此处描述的步骤,包括删除我最近修改过的文件。似乎没有任何效果。当 SourceKit 在 Xcode 中崩溃时,我尝试了一些建议。

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

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

【讨论】:

【参考方案21】:

无法对此给出直接的解决方案(尽管我确信这是 Apple 的错误),但我只是遇到了完全相同的错误消息并碰巧解决了它。这是我所做的:

一般情况

    注释掉最近更改的 Swift 代码(检查提交),直到应用再次编译 按住 Command 键并单击失败行中的每个调用方法并检查是否存在歧义

我的例子

就我而言(我使用的是用 Objective-C 编写的 XMPPFramework),失败的代码如下所示:

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

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

我的猜测是,如果对象的确切类型不明确,Swift 1.1 编译器在确定调用哪个方法方面存在问题。所以我创建了 roomMessage 显式类型 并得到了另一个错误,我通过删除 nickname() 方法调用后面的大括号来修复它。 这让我的应用再次构建。这是工作代码:

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

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

【讨论】:

【参考方案22】:

我确实在“Swift compiler segmentation fault when building”中回答了

我也遇到了这个错误,我是这样修复的:

检查您的项目,找出哪些文件使用了两次,然后删除一个,或者全部删除并重新添加。

我的 xCode 中的错误

:0: 错误:文件名“AttributedString.swift”使用了两次:'/Users/.../CNJOB/CNJOB/AttributedString.swift' 和 '/Users/.../CNJOB/CNJOB/AttributedString.swift'

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

:0: 错误:文件名“APIClient.swift”使用了两次:'/Users/.../CNJOB/CNJOB/APIClient.swift' 和 '/Users/.../CNJOB/CNJOB/APIClient.swift'

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

命令 /Applications/Xcode 3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc 失败,退出代码为 1

【讨论】:

以上是关于无法执行命令:分段错误:11 swift frontend command failed due to signal(使用 -v 查看调用)的主要内容,如果未能解决你的问题,请参考以下文章

Swift 编译器错误命令因信号而失败:分段错误:11

Swift 编译器错误,由于信号导致命令失败:分段错误:11

在 Swift 3 中存档项目并获得“由于信号分段错误 11 导致命令失败”

Swift 命令因信号而失败:分段错误

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

由于信号分段错误,命令失败 11 Xcode 9 - iOS 模拟器