再好的程序猿寫出的代碼也會出現(xiàn)BUG,只有在不斷調試修改下隔嫡,才能寫出優(yōu)質的代碼牲览。
下面我給大家介紹幾種比較方便定位crash的方法:
第一種也是比較常用的方法寥枝,通過看程序崩潰輸出的堆棧日志來定位出現(xiàn)BUG的位置。
一般情況下混坞,這種方法能定位出大部分的crash
上面圖片可以看出
> ?Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[2]'
數(shù)組中放入nil這個元素導致的崩潰狐援;
從崩潰日志來看:
UIKit0x000000010c1561d0 -[UIWindow sendEvent:] + 865?
——> ? ?-[ViewController testBug] + 109?
——>? +[NSArray arrayWithObjects:count:] + 52?
?——>? -[__NSPlaceholderArray initWithObjects:count:] + 290
可以看出崩潰的是在ViewController 調用testBug這個方法的時候,數(shù)組中有nil元素的原因究孕,從而直接定位到代碼具體位置啥酱。
第二種是開啟一個異常斷點(an ?Exception Breakpoint)。
在Xcode設置異常斷點:
當程序運行過程中厨诸,發(fā)生崩潰的時候镶殷,Xcode會自己定位到crash的地方;
從而可以清楚的直到自己寫的程序crash的地方在哪里N⒊辍绘趋!
方法一有的時候crash不會出現(xiàn)堆棧崩潰日志颤陶,這時方法二就顯得很有用了
那么,當一個發(fā)布的程序陷遮,怎么收集客戶使用我們寫的程序產生的crash日志呢滓走?
一般使用的一般是第三方集成的崩潰收集工具,如:友盟帽馋、騰訊的Bugly闲坎、國外的一些工具等等;我個人感覺用起來比較方便的是Bugly茬斧,適用于新手,集成簡單易用梗逮。(使用方法我就不介紹了项秉,直接看Bugly官網)