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"));





posted @ 2012-02-14 13:00  月光的尽头  阅读(1196)  评论(0编辑  收藏  举报