EXC_BAD_ACCESS的调试方法

记得好像是解释大爆炸理论还是神马的,有句话:Shit happens! 所以无论写什么语言的程序,都会遇到诡异的bug,一般都是空指针啊,野指针啊, 就是地址错。

今天遇到了ios里面的EXC_BAD_ACCESS错下面记下有助于调试的一些方法:

1 xcode里面点击Product菜单的Edit Schema,加两个环境变量:NSZombieEnabled, MallocStackLogging,都设为YES。(其实前者ms在5.0的target里面默认打开了)
NSZombieEnabled启用会打出类似*** -[CALayer release]: message sent to deallocated instance 0xce93c90这具体的错误提示,有利于定位错误。

MallocStackLogging启用后,就可以通过shell malloc_history pid address这样来看对应地址是怎么alloc出来的,就可以找到对应的对象或者类了。

2 还有一招是在你怀疑的类加上下面的方法
-(BOOL) respondsToSelector:(SEL)aSelector {
    printf("SELECTOR: %s\n", [NSStringFromSelector(aSelector) UTF8String]);
    return [super respondsToSelector:aSelector];
}
这样就可以把这个类每次调用的方法都打出来,可以缩小范围。

你可能感兴趣的:(ios,xcode)