【问题标题】:How to track down cause of SIGABRT如何追踪 SIGABRT 的原因
【发布时间】:2011-12-25 16:58:16
【问题描述】:

出于示例目的,我展示了这个问题的代码,但我的问题是:我应该如何追踪和理解 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 错误。

【问题讨论】:

  • 我重读了这篇文章,因为在之前的帖子中留下了另一条评论。如果它不可读,我可以理解,但您在哪个部分特别有问题。
  • 对不起,乔希,我会经历并改变一些事情(英语从来都不是我的强项)我当然不想仅仅因为他们不理解这个问题而排除任何人的回答。但如果这只是一些强迫症,那就是“为什么是我”
  • 大声笑你已经做到了。谢谢。就像我说的那样,我在发帖后确实重新阅读了这篇文章,希望我不会再遇到这个评论。我从不正确地写东西。我从来没有需要,所以这对我来说是一个很难改掉的习惯,但将来我会努力的。

标签: objective-c cocoa-touch crash sigabrt


【解决方案1】:

当对象接收到未实现的消息时,SIGABRT 上升。你的应用有多少警告?尝试浏览它们并找到警告您“某些对象可能无法响应某些选择器”的那些,如果您从所有这些中清除您的应用程序,您很可能会使其正常工作。

编辑:下面 cmets 的回答非常有帮助:

好的,这里有重型火炮 - 你尝试过使用断点吗?打开 项目资源管理器中的第六个选项卡,在左下角点击 + -> 添加异常断点 -> 完成。这将添加一个异常处理程序,该处理程序将在崩溃的方法调用上停止您的应用程序 应用程序。

编辑:从 xCode 5.0 开始 > 在创建断点时,您不再需要指定断点要捕获的异常。你只需要点击 + -> 添加异常断点就可以了。

【讨论】:

  • 我总共有4个(其中3个是未使用的对象,第三个是不兼容的指针类型。没有一个表示上面使用的任何类
猜你喜欢
  • 2019-03-17
  • 2012-08-29
  • 2012-12-06
  • 2012-10-19
  • 2015-10-20
  • 1970-01-01
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多