我有一个xcode项目并在设备上运行,调试构建一切都很好。
然而,当我尝试归档项目时,我从Swift编译器中获取了一个段错误:
0 swift 0x0000000105c36608 llvm::sys::PrintStackTrace(__sFILE*) + 40
1 swift 0x0000000105c36af4 SignalHandler(int) + 452
2 libsystem_platform.dylib 0x00007fff852705aa _sigtramp + 26
3 libsystem_platform.dylib 0x0000000000000002 _sigtramp + 2061040242
4 swift 0x0000000105f51896 swift::TypeBase::getTypeOfMember(swift::Module*, swift::ValueDecl const*, swift::LazyResolver*, swift::Type) + 534
5 swift 0x00000001050eee38 swift::SILType::getFieldType(swift::VarDecl*, swift::SILModule&) const + 56
6 swift 0x00000001051a1252 (anonymous namespace)::SILSROA::run() + 3602
7 swift 0x000000010516b116 swift::SILPassManager::runFunctionPasses(llvm::ArrayRef<swift::SILFunctionTransform*>) + 310
8 swift 0x000000010516b6f9 swift::SILPassManager::runOneIteration() + 761
9 swift 0x000000010516b92b swift::SILPassManager::run() + 251
10 swift 0x000000010516afbc swift::runSILOptimizationPasses(swift::SILModule&, swift::SILOptions const&) + 1644
11 swift 0x0000000104ffb141 frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 3537
12 swift 0x0000000104ffa35d main + 1533
13 libdyld.dylib 0x00007fff885d75fd start + 1
14 libdyld.dylib 0x0000000000000052 start + 2007140950
我看到有人在谈论某些可能导致此类错误的synta,但是有没有人知道如何尝试跟踪哪些代码导致了段错误?
答案 0 :(得分:34)
我有一个类似的问题,“解决方案”是在发布配置的构建设置中将swift编译器代码生成优化级别转换为-Onone
。这是Xcode 6.0.1的一部分。
答案 1 :(得分:3)
在降低优化级别之前(这绝对不是解决编译问题的方法,除非你使用一些非常简洁的低级别东西或某些专业)。
简单地看看编译器试图告诉你什么 - 是的。它还不是人类可读的日志。但你可以阅读,不能吗?:)
我遇到了这样的问题。
While running pass #1059521 SILFunctionTransform "Constant Propagation" on SILFunction "@_TTSg5VSC29UIApplicationLaunchOptionsKeyS_s8Hashable5UIKit_P__CSo8NSObjectS2_S0_10ObjectiveC_Ps9AnyObject____TFs17_dictionaryUpCastu2_Rxs8Hashable0_S_rFGVs10Dictionaryxq__GS0_q0_q1__".
如果你仔细观察那个烂摊子,你会发现你正在进行某种向上转换,这是不允许的。
这是什么意思?查看你的功能
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?)
并找到将launchOptions
投射为[NSObject : AnyObject]?
在swift 3中,它已变为[UIApplicationLaunchOptionsKey: Any]?
。移除该演员表并将launchOptions
等待[NSObject : AnyObject]?
的代码更新为。{/ p>
如果这有帮助,只需打开惊人的快速整个模块优化,以防万一你不知道整个模块的优化是什么 - &gt;阅读这篇文章:
答案 2 :(得分:0)
我也有这个问题,我发现代码中的某些构造似乎会导致编译器崩溃。
其中一个结构就是当你使用过多的[weak self]
时:
whatever { [weak self] in
whatever2 { [weak self] in
}
}
第二个[weak self]
是不必要的,会导致编译器崩溃。
答案 3 :(得分:-1)
在从另一家开发公司继承的项目中,我们遇到了同样的错误。我们注意到有一些与 Swift语言版本和 C ++语言方言(在Apple LLVM部分中)相关的自定义构建设置。以下是我们要解决的问题:
pod update
更新了广告连播并修复了一些新警告然后我们能够构建和存档项目。
此外,当您将设备设置为通用iOS设备时,请务必遵循此顺序中的步骤: