如何调试SIGABRT和EXC_BAD_ACCESS引起的crash

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

一般情况下,当SIGABRT发生的时候,会现实如下的bug信息:
The app crashes immediately.
它并不能精确的定位到crash发生在哪个源文件哪行代码中。为了精确的定位,我们可以使用Exception Breakpoint在Exception发生的时候暂停程序。


The Breakpoint Navigator


Adding the Exception Breakpoint
After the Exception Breakpoint has been added
After the crash, the problematic source line is now highlighted.
2.  EXC_BAD_ACCESS意味着你的程序在内存管理方面有bug。与 SIGABRT不同,发生 EXC_BAD_ACCESS错误时,在控制台里你不会得到一个错误的信息,但是你可以通过一些设置得到这些错误信息并进一步定位内存错误发生的位置。


The Edit Scheme menu option.



Enabling the Zombie Objects diagnostic option.

注意:当你把选项 Zombie Objects打开的时候,你的应用程序永远不会再释放(dealloc)内存,会导致不停的内存泄漏并最终在某一时刻run out of free memory,所以不要一直开着 Zombie Objects选项,只有当你定位 EXC_BAD_ACCESS错误的时候打开它,当bug解决掉之后,立刻关闭它

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值