iOS調試奇巧淫技(一)

你以爲,你以爲的就是你以爲的嗎?

這裏寫圖片描述

  • 你以爲你代碼寫的很OK啦?
  • 你以爲你的是大牛啦?
  • 你以爲的就是你以爲的嗎?
  • 你的代碼經得起考驗嗎?(PS:愛經得起考驗嗎)

iOS調試的技巧很多,通過調試我們不僅可以迅速找到Bug的所在,更能優化代碼,讓你的你以爲不再是你以爲!

一、斷點

普通斷點

這裏寫圖片描述

當運行時遇到斷點會停止下來供程序員調試

這裏寫圖片描述

我們清晰的看到此時的i依舊等於0,該函數在一個名爲ViewController中

這裏寫圖片描述

上圖中有五個可選按鈕

分別是取消斷點按鈕、繼續執行一步按鈕、步入按鈕、步出按鈕

條件斷點

這裏寫圖片描述
點擊斷點右鍵的Edit Breakpoint按鈕
這裏寫圖片描述

解釋一下:

Condition後面的UILbel中我們可以寫入條件語句 例如i==5,此時斷點只會在i==5的時候斷點作用纔會生效

同樣的我們可以在lgnore裏面設置數字,表示忽略前面的執行次數,在數字+1

纔會生效。

當我們想看到哪個函數執行了多少次,可以在Action設置爲Log Message,如下圖所示的那樣:

這裏寫圖片描述

記住一定要把下面的對號打上呀

異常斷點

注意這個斷點感覺是最實用的

我們經常會遇到程序調試過程中崩潰,幾萬行甚至幾十萬行的代碼,崩潰後就會跑到Mian函數中,根本不清楚

哪裏出現問題,想加普通斷點調試都不知道該往哪裏加,如下圖那樣:

這裏寫圖片描述

看到這個你是不是這樣的表情:duang~一般的崩潰

這裏寫圖片描述

此時我們就需要加到異常斷點,加入辦法如下:

這裏寫圖片描述

這裏寫圖片描述
這樣我們遇到崩潰~~~

這裏寫圖片描述

Dang~的XCode直接幫我們進入引起Crash的地方,方便進行修改

配置斷點:根據使用性也加函數、類斷點

通過配置斷點我們可以精確到某個類或者某個方法中進行終端

這裏寫圖片描述

具體做法是在Symobol中根據具體的需求加上相應的函數或者類

這裏寫圖片描述

代碼運行時間

我們完成一個項目後,進行調試,爲了使軟件流暢的最大化,有時候需要優化代碼,這時候我們需要找到哪些
代碼是耗時的,想辦法優化算法或者另外開闢多線程,保證良好的用戶體驗。這時候就用到測時間的方法。

NSDate *startTime=[NSDate date];

for (i=0; i<100000; i++) {
    NSLog(@"NSLog:%d次",i);
}
NSLog(@"Time is:%f",-[startTime timeIntervalSinceNow]);

建議在pch文件中可以定義一個宏變量,關於pch的用法

可以參考我的這篇博客

#define STARTTIME NSDate *startTime=[NSDate date];
#define ENDTIME  NSLog(@"Time: %f", -[startTime timeIntervalSinceNow]);

 STARTTIME

for (i=0; i<100000; i++) {
    NSLog(@"NSLog:%d次",i);
}
   ENDTIME

還有LLDB、Profile等東西需要細細總結,但因每天晚上要跑步就先到這裏啦,明天找時間補充~~~    O(∩_∩)O
發佈了134 篇原創文章 · 獲贊 184 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章