如何调试SIGABRT和EXC_BAD_ACCESS引起的crash

原文地址:http://blog.sina.com.cn/s/blog_777694e901014jph.html


1. SIGABRT是处于程序控制状态下的crash,SIGABRT引起的crash是因为系统发现了应用程序正在做一些系统不希望它去做的事情(Exception)。

一般情况下,当SIGABRT发生的时候,会现实如下的bug信息:
它并不能精确的定位到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解决掉之后,立刻关闭它。


你可能感兴趣的:(程序人生)