Xcode有个比较厉害而又经常被忽略的断点功能—Exceptions Breakpoint。
使用Exceptions Breakpoint的时候发现,如果将Exceptions设置为All,会导致应用在main()函数里面崩溃,避免这个问题的方法是将Exception更改为Objective-C.
将All更改为Objective-C
在stack overflow看到的解释如下:
stack overflow看到的解释附链接:http://stackoverflow.com/questions/26127004/xcode-throws-an-exception-in-main-in-ios-8-with-all-exceptions-breakpoint
About Exceptions Breakpoint
苹果官方文档只介绍了这个断点的使用方法,没对这个断点的功能做具体的介绍。
当应用发生诸如数组越界、null值、对象重复释放等问题导致的崩溃时,Xcode通常只会跳到main()函数。而Exceptions Breakpoint会在异常发生的时候在异常的地方放一个断点,调试器不会再跳到main()函数,而是停留在了异常发生的地方,而且大多数情况下Exceptions Breakpoint都会打印异常消息。碉堡了!
其他调试技巧备忘
1、启用NSZombieEnabled ——— 定位野指针问题,只能检测已经释放了对象的地址。
2、静态分析 ——— 可以定位部分内存泄露、空指针问题,比如传入了null指针。
3、Instruments ——— 使用子工具Leaks可以定位循环引用问题。
4、block引用循环问题通常难以用工具检测出来,可以在对象的- (void)dealloc方法中打印日志来判断对象是否正常释放。
5、条件断点 ——— 在普通断点中设置一定的条件,满足条件时断点才会触发,适用于循环结构中定位到具体某次循环。
6、符号断点 ——— 可以用来快速定位unrecognized selector send to instance问题。
网友评论