1. SIGABRT是处于程序控制状态下的crash,SIGABRT引起的crash是因为系统发现了应用程序正在做一些系统不希望它去做的事情(Exception)
它并不能精确的定位到crash发生在哪个源文件哪行代码中。为了精确的定位,我们可以使用Exception Breakpoint在Exception发生的时候暂停程序。
2. EXC_BAD_ACCESS意味着你的程序在内存管理方面有bug。与SIGABRT不同,发生EXC_BAD_ACCESS错误时,在控制台里你不会得到一个错误的信息,但是你可以通过一些设置得到这些错误信息并进一步定位内存错误发生的位置。
当你把选项Zombie Objects打开的时候,你的应用程序永远不会再释放(dealloc)内存,会导致不停的内存泄漏并最终在某一时刻run out of free memory,所以不要一直开着Zombie Objects选项,只有当你定位EXC_BAD_ACCESS错误的时候打开它,当bug解决掉之后,立刻关闭它
参考:http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1
相关推荐
- **异常类型**: 常见的奔溃原因有EXC_BAD_ACCESS(内存访问错误)、EXC_CRASH(程序异常终止)、SIGABRT(应用程序自己请求退出)等,分析这些异常类型可以帮助定位问题根源。 - **线程信息**: 奔溃日志中的线程...
Mach异常可以是EXC_BAD_ACCESS(内存访问异常)等。Mach异常是通过Mach API暴露给用户态的,可以直接通过Mach API设置thread、task、host的异常端口来捕获Mach异常,抓取Crash事件。 二、Unix Signal Unix Signal...
- **异常类型**:日志中会显示异常类型,如`EXC_BAD_ACCESS`、`SIGABRT`等,不同类型的异常对应不同的问题。 - **错误信息**:查看错误信息,如`NSException`的`reason`,有助于理解崩溃的具体情况。 - **堆栈...
2. **异常类型**:如SIGABRT、EXC_BAD_ACCESS等,表示发生错误的类型。 3. **堆栈跟踪**:这是最重要的一部分,它列出了崩溃发生前调用的函数序列,通过分析这个序列,开发者可以找到出错的具体位置。 4. **线程信息...
2. **检查异常信息**:有时,崩溃日志会包含异常信息,如`EXC_BAD_ACCESS`或`SIGABRT`,这可以帮助确定问题类型。 3. **查看局部变量和状态**:如果日志包含崩溃时的变量值,可以分析这些值以确定问题所在。 4. **...