异常断点和僵尸对象的使用

来源:互联网 发布:淘宝抓取同行客户软件 编辑:程序博客网 时间:2024/05/10 17:12

大家在写程序时可能会直接报出一些错误,像是数组越界或是对象为空什么的,但是碰到这些情况后就会发现代码直接就跳到了主函数(main.m)对查找问题所在极为不利。在查到了一些资料后,针对着使用异常断点和僵尸对象的特点及其展现问题的标志,做一些个人见解。

1. 使用exception breakpoint的作用

如果不添加异常断点,运行程序出现异常时就会跳转到main函数,如果添加了异常断点后就会在抛出异常的那行停下。

 

原因描述:

代码有问题导致异常时,异常断点会停止程序的运行,一般没有设置异常断点,应用程序崩溃时,可能只会显示造成崩溃的那条异常,即便去查看日志也看不出什么问题所在,设置异常断点后,调试器会在异常抛出的瞬间停止程序的运行,并将程序定位到出现异常的那行代码上。

 

2. 使用 enable Zombie(只能用在模拟器上)

使用情况:在我们运行一个项目时,经常会有crash现象,这是让大家相当烦闷的事情,一般的造成原因我们根据日志就可以看到,但有的野指针crash是不会显示的,这时我们就需要用到僵尸对象了,在editschem中设置enable Zombie Objects为enable状态。这样执行程序如果发生crash就会在日志中打印崩溃的原因。

解析:

一般出现僵尸对象是因为我们使用了一个已经被release掉的对象。一般当我们release内存中的一个对象时,该对象将被销毁。但是,当Zombies开启时,只是将其标志为release状态,但并没有销毁,这时如果我们再度访问这个对象,Xcode可以告诉我们正在访问的对象是一个不应该存在的对象。因为xcode知道这个对象是什么,所以知道在哪里,及这样的访问是什么时候发生的。

0 0