iOS Developer

开发之--简单的定位crash

2017-03-04  本文已影响0人  voQuan

再好的程序猿写出的代码也会出现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官网

上一篇下一篇

猜你喜欢

热点阅读