objective-c – 如何跟踪SIGABRT的原因

我为示例目的显示此问题的代码,但真的我的问题是:我应该如何跟踪和理解SIGABRT错误?我读这个问题:sigabrt with no error message,但我不认为这涉及到我的问题。

下面显示的示例显然不是一个xib问题,以前的时间获取SIGABRT似乎更多与未处理的异常有关。我试过使用GDB的bt,但这没有任何帮助。是否没有更全面的转储来查看?我也使用NSZombie,但我真的不明白如何使用它,所以如果这是你的答案,请提供一个链接到文档,如何我应该从它获得相关数据。

这里是我的例子:我试图使用Core Data。我的项目最初没有设置它,所以我不得不手动添加它,我做了我去项目>构建阶段>链接二进制库>点击加号和添加CoreData.framework

然后,我通过转到文件>新建>数据模型创建了我的数据模型。我创建了很多属性,就是这样

之后,我将适当的方法添加到应用程序委托(我通过使用Core Data创建一个新项目,然后复制这些方法):

//code removed, as its not needed for the question/answer

之后,我只是试图保存一个值到托管对象(再次,代码从一个新的项目的默认实现复制):

//code removed, as its not needed for the question/answer

但是我执行addTime方法时得到的是SIGABRT错误。

当对象接收未实现的消息时,SIGABRT上升。您的应用程式有多少警告?尝试冲浪通过他们,找到那些警告你“一些对象可能不响应一些选择器”,如果你清理你的应用程序从所有这些,你很可能会得到它正常工作。

编辑:回答从下面的评论是非常有益的:

ok, here goes heavy artillery – have you tried using breakpoints? Open
the sixth tab in your project explorer, in the bottom left corner tap
+ -> Add exception breakpoint -> Done. This will add an exception handler that will stop your app on the very method call that crashes
the app.

编辑:从xCode 5.0>您不再需要指定哪个异常是您的断点将在创建断点时捕获。你只需要打 – >添加异常断点,你是好的。

转载注明原文:objective-c – 如何跟踪SIGABRT的原因 - 代码日志