当将应用程序部署到设备时,程序将在几个周期后退出,并出现以下错误:

Program received signal: "EXC_BAD_ACCESS".

程序在iPhone模拟器上运行没有任何问题,只要我一次执行一个指令,它也会调试和运行。一旦我让它再次运行,我将击中EXC_BAD_ACCESS信号。

在这种特殊情况下,它恰好是加速度计代码中的一个错误。它不会在模拟器中执行,这就是它不会抛出任何错误的原因。但是,它将在部署到设备后执行。

这个问题的大多数答案都处理一般的EXC_BAD_ACCESS错误,因此我将保留这个选项,作为可怕的坏访问错误的统称。

EXC_BAD_ACCESS通常是非法内存访问的结果。你可以在下面的答案中找到更多信息。

您以前遇到过EXC_BAD_ACCESS信号吗?您是如何处理它的?


当前回答

运行应用程序,在它失败后(应该显示“中断”而不是“EXC_BAD_ACCESS”…检查控制台(Run > Console)…现在应该有一条消息告诉它要访问什么对象。

其他回答

我如何处理EXC_BAD_ACCESS

有时候我觉得当一个EXC_BAD_ACCESS错误被抛出时,xcode会在主代码中显示错误。m类没有提供崩溃发生的额外信息(有时)。

在这种情况下,我们可以在Xcode中设置一个异常断点,这样当异常被捕获时,就会设置一个断点,并直接通知用户崩溃已经发生在那一行

我忘记在初始化方法中返回self…;)

我得到它,因为我没有使用[self performSegueWithIdentifier:sender:]和-(void) prepareForSegue:(UIstoryboardSegue *)正确

在你做任何事情之前,你应该尝试:

产品->清洁

然后再跑。这对我很管用。否则,我会浪费好几个小时。

我发现在objc_exception_throw上设置断点很有用。这样,当您获得EXC_BAD_ACCESS时,调试器应该会中断。

说明可以在这里找到调试技术