Xcode 7 找到 SIGABRT 的原因

Posted

技术标签:

【中文标题】Xcode 7 找到 SIGABRT 的原因【英文标题】:Xcode 7 finding the cause of SIGABRT 【发布时间】:2015-08-19 21:52:54 【问题描述】:

我正在使用 Xcode 7 beta 5 并创建一个多视图应用程序。一个视图有一个按钮可以将您带到第二个视图,但是当按下此按钮时,它会因线程 1:Signal SIGABRT 而崩溃。

我已经检查了目标视图内的所有事物的连接,并且一切似乎都很好(我也检查并重新设置了它们以确保它们)。我尝试添加一个异常断点,该断点因某事而停止,但我不确定如何找到故障线。

我也试过手动添加断点,发现如下:

@IBOutlet weak var wakeTimeLabel: UILabel!
@IBAction func snoozeButton(sender: AnyObject) 
    snooze()

如果我将断点放在那里的第一行(在所有其他出口之后),它会捕获,但是当我把它放在函数行时它会抛出 SIGABRT。如果我完全删除这两行,SIGABRT 仍然会发生。

控制台包含以下内容:

* 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类与键 whiteSwipe 的键值编码不兼容。” * 首先抛出调用栈: (0x182a2da94 0x197387f80 0x182a2d754 0x1838a3694 0x18829b378 0x1883dd874 0x1829575ac 0x1883dc25c 0x188602fd8 0x1886077c4 0x188607a38 0x188607c94 0x187f755bc 0x187f75538 0x187f5dfa0 0x187f74e50 0x187f74a80 0x187f6dcf0 0x187f3eea4 0x187f3d520 0x1829e50dc 0x1829e4b70 0x1829e2870 0x1829118a0 0x18d96c088 0x187fa60d4 0x1000b4be0 0x197bd68b8) libc++abi.dylib:以 NSException 类型的未捕获异常终止 (lldb)

【问题讨论】:

【参考方案1】:

即使你说你重做了连接,我记得Sigabrt 是错误连接引发的异常。特别是,您的错误消息是您在连接后更改连接签名时出现的错误消息。

例如,在删除 @IBOutlet 声明中的 1 个字符后,我收到了一条非常相似的消息:

FeedViewCollectionCell 0x7feab0c583b0> setValue:forUndefinedKey:]: 
this class is not key value coding-compliant for the key nameLabel.

我建议您重新连接插座。确保您在一个项目上没有 2 个相同的连接,并确保在设置插座后不要更改签名。

【讨论】:

刚刚再次尝试(删除代码,右键单击对象并点击 x),同样的事情仍在发生。还有其他可能的原因/解决方案吗?有什么方法可以识别故障线路吗? 由于错误消息提到whiteSwipe,请检查您声明whiteSwipe的位置。

以上是关于Xcode 7 找到 SIGABRT 的原因的主要内容,如果未能解决你的问题,请参考以下文章

linux 信号是在内核内部发送或处理的?

Xcode 线程 1 SIGABRT 上的 Firebase 通知错误

Xcode 中的 SIGABRT 错误问题

Xcode:“线程 1:信号 SIGABRT”

XCode 错误线程 1:信号 SIGABRT

Swift Xcode 6 在测试时提供 SIGABRT