将应用程序部署到设备时,程序将在几个周期后退出并出现以下错误:
Program received signal: "EXC_BAD_ACCESS".
Run Code Online (Sandbox Code Playgroud)
该程序在iPhone模拟器上运行没有任何问题,只要我逐步执行一个指令,它也将调试和运行.一旦我让它再次运行,我就会EXC_BAD_ACCESS发出信号.
在这种特殊情况下,它恰好是加速度计代码中的错误.它不会在模拟器中执行,这就是它没有抛出任何错误的原因.但是,它会在部署到设备后执行.
这个问题的大部分答案都是针对一般EXC_BAD_ACCESS错误的,所以我会把这个问题保留为可怕的Bad Access错误.
EXC_BAD_ACCESS通常由于非法内存访问而被抛出.您可以在下面的答案中找到更多信息.
你EXC_BAD_ACCESS以前遇到过这个信号吗,你是怎么处理它的?
这是从这个布拉德·拉尔森的答案 SO问题
如果添加两个断点,则应该能够调试这些异常.为此,请转到"运行"| 显示| 断点并创建两个全局断点(我在全局中断点,因为它们在我的所有应用程序中都非常有用).第一个应命名为"objc_exception_throw",其位置应为"libobjc.A.dylib".第二个应该是" - [NSException raise]",它的位置应该是"CoreFoundation".
现在,如果您在启用断点的情况下开始调试应用程序,它应该在抛出这些异常时中断.然后,您应该能够在调试器中看到导致异常的事件链.
现在在这个答案中我想问我如何添加位置提到???
请原谅我的无知,但在iPhone模拟器中运行iPhone应用程序时,有些事情一直困扰着Xcode调试器.
有时,当我在Interface Builder中搞砸了一些东西时,我在运行时得到一个未处理的异常,然后我被抛回Xcode.我唯一看到的是单行"未捕获的异常"或类似的东西.从我所看到的,没有其他信息,更不用说堆栈跟踪或任何其他有用的信息.
在过去十年左右的时间里,我一直在使用Visual Studio进行开发,而且我习惯于获得一个很好的堆栈跟踪并在发生类似情况时完成异常信息.
我确信我只是遗漏了一些非常明显的东西......希望......