原文地址:http://blog.sina.com.cn/s/blog_777694e901014jph.html
1. SIGABRT是处于程序控制状态下的crash,SIGABRT引起的crash是因为系统发现了应用程序正在做一些系统不希望它去做的事情(Exception)。
一般情况下,当SIGABRT发生的时候,会现实如下的bug信息:
![The app crashes immediately. The app crashes immediately.](http://d1xzuxjlafny7l.cloudfront.net/wp-content/uploads/2012/02/First-crash-700x475.png)
它并不能精确的定位到crash发生在哪个源文件哪行代码中。为了精确的定位,我们可以使用Exception Breakpoint在Exception发生的时候暂停程序。
![The Breakpoint Navigator The Breakpoint Navigator](http://d1xzuxjlafny7l.cloudfront.net/wp-content/uploads/2012/02/Breakpoint-navigator.png)
![Adding the Exception Breakpoint Adding the Exception Breakpoint](http://d1xzuxjlafny7l.cloudfront.net/wp-content/uploads/2012/02/Add-exception-breakpoint.png)
![After the Exception Breakpoint has been added After the Exception Breakpoint has been added](http://d1xzuxjlafny7l.cloudfront.net/wp-content/uploads/2012/02/Exception-breakpoint-added.png)
![After the crash, the problematic source line is now highlighted. After the crash, the problematic source line is now highlighted.](http://d1xzuxjlafny7l.cloudfront.net/wp-content/uploads/2012/02/Crash-with-source-line-highlighted-700x488.png)
2. EXC_BAD_ACCESS意味着你的程序在内存管理方面有bug。与SIGABRT不同,发生EXC_BAD_ACCESS错误时,在控制台里你不会得到一个错误的信息,但是你可以通过一些设置得到这些错误信息并进一步定位内存错误发生的位置。
![The Edit Scheme menu option. The Edit Scheme menu option.](http://d1xzuxjlafny7l.cloudfront.net/wp-content/uploads/2012/02/Edit-scheme-menu.png)
![Enabling the Zombie Objects diagnostic option. Enabling the Zombie Objects diagnostic option.](http://d1xzuxjlafny7l.cloudfront.net/wp-content/uploads/2012/02/Enable-zombie-objects.png)
注意:当你把选项Zombie Objects打开的时候,你的应用程序永远不会再释放(dealloc)内存,会导致不停的内存泄漏并最终在某一时刻run out of free memory,所以不要一直开着Zombie Objects选项,只有当你定位EXC_BAD_ACCESS错误的时候打开它,当bug解决掉之后,立刻关闭它。