前言:---------- >學會如何調(diào)試程序bug<----------
- 1.在開發(fā)中如何調(diào)試程序 ------------------(請看==》步驟一 至步驟 五)
- 2.使用過哪些調(diào)試工具 ---------------------騰訊的 bugly
- 3.程序上線后,如何收集錯誤信息---------(請看==》步驟 六)
- 4.bugly演示 --------------------------------- (請看==》步驟 六)
- 5.NSLog進行調(diào)試 --------------------------請看小結(jié)后-NSLog調(diào)試
案例分析:
步驟 一
- 創(chuàng)建一個項目批什,叫 "調(diào)試-01-crash".
- 假如涉瘾,我們在這個項目中寫一段錯誤的代碼连茧。如下:
錯誤代碼示例
步驟 二
cmd + R睡雇,運行一下污尉,會報下面這個錯誤坟乾,如下圖所示: (插入一個空對象在1的索引位置)
錯誤解析
步驟 三
這時我們就會想啃沪,我們在哪里犯了錯誤昧廷,在哪里插入了空對象堪嫂,并有到處翻bug的沖動。但是我們這時設(shè)想我們會有上百個文件木柬,我們怎么找呢皆串?
-------------采用調(diào)用堆棧的方法-------------
先執(zhí)行的在下面,后執(zhí)行的在上面眉枕。
調(diào)用堆棧
調(diào)用堆棧的詳解
首先恶复,要看一下,調(diào)用堆棧給我們帶來了哪些信息速挑,比如說上圖所示谤牡,
① 程序啟動的時候調(diào)用 -[UIWindow makeKeyAndVisible]
====>(在往上看)
② viewController調(diào)用 - [viewController viewDidLoad]
- [viewController demoCrash]
③ 然后看下面這個,在一個數(shù)組中試圖插入一個對象
+ [NSArray arrayWithObjects:count:]
④ 在看到這個 -[__NSPlaceholderarray initwithObjects:count:]
⑤ 在往上看就崩潰了
這時姥宝,我們就知道了翅萤,在 #demoCrash# 方法中出現(xiàn)了上面所描述的錯誤。
⑥ 分析完畢
步驟 四
找到錯誤腊满,定位方法如下圖所示:
找方法
定位方法
步驟 五
如果該項目套么,在真機上運行時,會怎么樣碳蛋?
** 項目會提示錯誤信息胚泌,調(diào)用堆棧不會顯示。**
真機運行-顯示結(jié)果
程序上線后肃弟,如何收集錯誤信息
步驟 六
這時玷室,我們思考一個問題,任何一個程序員愕乎,在做項目的時候都有可能會出現(xiàn)錯誤阵苇,比如說程序在上架的時候很有可能,有些錯誤沒有改掉感论,或者說在測試的時候沒有發(fā)現(xiàn)绅项,就重復上架了。這時候比肄,當用戶運行時快耿,就會產(chǎn)生崩潰囊陡。
===》那我們,出現(xiàn)一個問題掀亥,程序上線后撞反,我們該如何收集錯誤信息呢?
對與這個搪花,我們會通常遏片,用第三方框架,在這里我們就用撮竿,QQ的bugly進行演示吮便。
bugly演示
步驟 七 我們用QQ掃一掃,登錄一下幢踏。就會進入下面的界面髓需。
按照下面進行操作如圖所示:
注冊完畢后,會讓我們房蝉,下載SDK僚匆,查看產(chǎn)品信息。
如下所示:
下載SDK
點擊后進入這個界面
看使用指南Pod集成
pod集成
pod集成完之后---> 初始化SDK
初始化SDK
然后搭幻,我們找到 APPid
1
2
3
將 appid 填寫到工程中咧擂,如下:
代碼示例
到這個時候,基本完成檀蹋,我們運行一下程序屋确。會看到下面這張圖,里面什莫錯誤也沒發(fā)現(xiàn)续扔。刷新一下攻臀,也看不到崩潰日志。
原因:一般我們程序運行纱昧,發(fā)生崩潰刨啸,都會停留在下面這張圖中所顯示。它就是一個斷點识脆,斷點停留在這里了设联,程序后面代碼就不執(zhí)行了,不執(zhí)行的話灼捂,錯誤信息就提交不上去离例。
我們把程序安裝到真機,運行一下悉稠,會出現(xiàn)閃退的現(xiàn)象宫蛆。
在刷新一下,圖上這個界面的猛,會出現(xiàn)下面耀盗,找到日志想虎,如下圖:
點擊錯誤日志后會出現(xiàn)如下圖:
重點看這里:
通過上圖我們會發(fā)現(xiàn)一個什莫細節(jié)呢?
我們導入了騰訊的第三方框架之后叛拷,即便我們的程序上架了舌厨,我們也可以知道這個應用程序會崩潰到哪里。
小結(jié)
1.寫在第一句
細節(jié)
2.金玉良言
金玉良言
NSLog調(diào)試
步驟一
創(chuàng)建一個名為"NSLog"的項目工程忿薇,在創(chuàng)建一個PCH文件裙椭。如下圖:
PCH創(chuàng)建
cmd + B 編譯一下
假如,我們這個程序使用了兩年了署浩,我們一直用的NSLog進行的調(diào)試骇陈,突然一想,把NSLog替換掉瑰抵。那我們就考慮用PCH.如下圖:
1
2
3
4
5
main:我們要使NSLog打印的更漂亮可以對其進行如下圖的設(shè)置:
建議