EXC_BAD_ACCESS问题
EXC_BAD_ACCESS错误一般难以跟踪,出现的原因:
对一个已经释放的对象进行release,或向已经释放的对象发送消息
其实就是使用了野指针
定位出错点:
1.添加NSZombieEnabled环境变量(参考设置NSZombieEnabled和MallocStackLogging)
在EXC_BAD_ACCESS发生时,控制台会打印问题描述
比如输出:Untitled[3646:a0f] *** -[CFString release]: message sent to deallocated instance 0x10010d340
2.此时就可以通过以下命令,得到信息
(gdb) shell malloc_history {pid/partial-process-name} {address}
其中pid为3646,address为0x10010d340,具体执行:
(gdb) shell malloc_history 3646 0x10010d340
ps:记录一条语句:
NSLog(@"NSZombieEnabled: %s", getenv("NSZombieEnabled"));