开发之--简单的定位crash
再好的程序猿写出的代码也会出现BUG,只有在不断调试修改下,才能写出优质的代码。
下面我给大家介绍几种比较方便定位crash的方法:
第一种也是比较常用的方法,通过看程序崩溃输出的堆栈日志来定位出现BUG的位置。
一般情况下,这种方法能定位出大部分的crash
上面图片可以看出
> Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[2]'
数组中放入nil这个元素导致的崩溃;
从崩溃日志来看:
UIKit0x000000010c1561d0 -[UIWindow sendEvent:] + 865
——> -[ViewController testBug] + 109
——> +[NSArray arrayWithObjects:count:] + 52
——> -[__NSPlaceholderArray initWithObjects:count:] + 290
可以看出崩溃的是在ViewController 调用testBug这个方法的时候,数组中有nil元素的原因,从而直接定位到代码具体位置。
第二种是开启一个异常断点(an Exception Breakpoint)。
在Xcode设置异常断点:
当程序运行过程中,发生崩溃的时候,Xcode会自己定位到crash的地方;
从而可以清楚的直到自己写的程序crash的地方在哪里!!
方法一有的时候crash不会出现堆栈崩溃日志,这时方法二就显得很有用了
那么,当一个发布的程序,怎么收集客户使用我们写的程序产生的crash日志呢?
一般使用的一般是第三方集成的崩溃收集工具,如:友盟、腾讯的Bugly、国外的一些工具等等;我个人感觉用起来比较方便的是Bugly,适用于新手,集成简单易用。(使用方法我就不介绍了,直接看Bugly官网)