首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >编译时出现Swift编译器分段错误

编译时出现Swift编译器分段错误
EN

Stack Overflow用户
提问于 2014-06-15 01:50:26
回答 53查看 60.9K关注 0票数 103

向我的UIViewExtension.swift文件中的UIView添加一个(方便的)计算的height属性会导致Swift编译器分段错误...这里可能会出什么问题呢?

代码语言:javascript
复制
0  swift                    0x00000001061e5608 llvm::sys::PrintStackTrace(__sFILE*) + 40
1  swift                    0x00000001061e5af4 SignalHandler(int) + 452
2  libsystem_platform.dylib 0x00007fff894da5aa _sigtramp + 26
3  libsystem_platform.dylib 0xb03939841e997c88 _sigtramp + 2504775416
4  swift                    0x00000001064c8bb9 swift::NominalTypeDecl::getMembers(bool) const + 41
5  swift                    0x00000001055efab9 swift::irgen::ClassMetadataLayout<(anonymous namespace)::FindClassMethodIndex>::addClassMembers(swift::ClassDecl*) + 329
6  swift                    0x00000001055e97b2 swift::irgen::emitVirtualMethodValue(swift::irgen::IRGenFunction&, llvm::Value*, swift::SILType, swift::SILDeclRef, swift::CanTypeWrapper<swift::SILFunctionType>, swift::ResilienceExpansion) + 434
7  swift                    0x00000001056550d3 swift::SILVisitor<(anonymous namespace)::IRGenSILFunction, void>::visit(swift::ValueBase*) + 42611
8  swift                    0x000000010564a266 swift::irgen::IRGenModule::emitSILFunction(swift::SILFunction*) + 8678
9  swift                    0x00000001055cb6f8 swift::irgen::IRGenModule::emitGlobalTopLevel() + 184
10 swift                    0x00000001056376e3 performIRGeneration(swift::IRGenOptions&, swift::Module*, swift::SILModule*, llvm::StringRef, llvm::LLVMContext&, swift::SourceFile*, unsigned int) + 1859
11 swift                    0x0000000105638033 swift::performIRGeneration(swift::IRGenOptions&, swift::SourceFile&, swift::SILModule*, llvm::StringRef, llvm::LLVMContext&, unsigned int) + 51
12 swift                    0x00000001055aa65a frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 4842
13 swift                    0x00000001055a935d main + 1533
14 libdyld.dylib            0x00007fff8a82e5fd start + 1
代码语言:javascript
复制
1.  While emitting IR SIL function @_TFCSo6UIViewg6heightSd for 'anonname=0x7ff422892fd0' at <path redacted>/UIViewExtension.swift:60:5
<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)
Command /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254

如果需要更多信息来破解这篇文章,请发表评论。谢谢!

编辑:

下面是一个相关的.xcodeproj,它返回这个问题的编译器错误。

EN

回答 53

Stack Overflow用户

发布于 2014-10-06 00:18:02

我之所以出现这个错误,是因为我正在执行以下操作:

代码语言:javascript
复制
if(currentMeal?.State == .Deleted){

}

而不是

代码语言:javascript
复制
if(currentMeal!.State == .Deleted){

}

所以我认为可选的不在if条件中展开可能会导致这个错误

票数 76
EN

Stack Overflow用户

发布于 2016-02-08 00:32:19

当您在Swift中遇到编译器segfault时,您不会得到方便的行号和错误消息。下面是如何追踪问题的方法:

  1. 在项目中创建一个名为SegFaultDebugger.swift的新文件。
  2. 在此新文件中,为出现问题的类定义一个扩展。
  3. 将一组方法从主文件移动到SegFaultDebugger.swift.
  4. Compile.

此时,会发生以下三种情况之一:

  • You仍然获得原始文件中的段错误:将方法从SegFaultDebugger.swift移回原始文件,并将一组不同的方法移到SegFaultDebugger.swift中。Repeat
  • You在SegFaultDebugger.swift中得到一个段错误,太棒了!现在使用二进制搜索将段错误锁定到特定的方法,直到您可以找出是什么构造导致了it.
  • You获得有意义的编译器错误:太棒了!修复错误。编译完成后,将您的方法移回原始文件中。
票数 27
EN

Stack Overflow用户

发布于 2015-11-27 22:08:55

我在扩展我的一个协议和输入错误的可选类型参数时遇到了这个错误。

代码语言:javascript
复制
protocol SomeProtocolName: class {
    var someProtocolVariable: String { get set }

    func someProtocolFunction(someProtocolVariable: String)
}

// MARK:
extension SomeProtocolName {
    func someProtocolFunction(someProtocolVariable: String?) {
        self.someProtocolVariable = someProtocolVariable
    }
}

prototype中的函数参数String和extension中的String?中的差异导致了分割错误11。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24222644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档