Debug
Zombie Object
使用
当出现EXC_BAD_ACCESS错误时,一般是由于访问了已被释放的对象,通过Product -> Scheme -> Edit Scheme -> Diagnostics 勾选Zombie Object开快速定位问题。
原理
开启Zombie Object后,当对象retainCount为0即将被释放时,编译器会用一个内置的僵尸对象来替代该对象,对该对象发送消息时会出发异常,同时可以快速定位问题。
当问题解决后记得关闭Zombie Object选项
Address sanitizer
当程序创建变量分配一段内存时,将此内存后面的一段内存也冻结住,标识为中毒内存。当程序访问到中毒内存时(越界访问),就会抛出异常,并打印出相应log信息。
Chisel
Chisel常用命令:
| 命令 | 效果 |
|---|---|
| pviews | 打印指定view的层级 |
| pvc | 打印viewController的结构 |
| show & hide | 显示/隐藏视图 |
| border/unborder | 给指定view添加边框标记 |