Xcode 斷點調試

基本斷點express

以下圖,這種是最經常使用的斷點,也是最容易設置。左鍵點擊一下就能夠設置。 
數組

duandian1.png

編輯斷點框架

斷點是能夠編輯的。函數

duandian2.png

斷點有下面幾個屬性能夠設置:lua

  • Conditionspa

  • Ignore調試

  • Actionorm

  • Options對象

Conditionip

這裏能夠輸入條件表達式,知足條件的時候斷點就會生效。例如上面輸入a == 50。這個是很是有用的設置,特別在循環體內調試的時候,用着真的是爽。

Ingore

在這裏能夠設置忽略斷點次數。

Action

Action是這裏最複雜的,最強大的功能了。Action有6中類型。以下圖

QQ截圖20150730105638.png

  1. AppleScript

  2. Capture GPU Frame

  3. Debugger Command

  4. Log Message

  5. Shell Command

  6. Sound

經常使用的就是Log Message和Debugger Command

Log Message

在這裏填寫的東西能夠打印到控制檯。例如我作了以下設置:

duandian3.png

%B會打印斷點的名字,%H會打印斷點的調用次數,@@中間能夠輸入表達式。 上面的設置在控制檯的輸出以下:

55.png

Debugger Command

這裏能夠輸入調試命令,也就是po(打印對象信息),bt(打印函數棧),expression(表達式)這些調試命令。看圖就明白了:

duandian4.png

image 控制檯輸出以下:

duandian5.png

Options

勾選Automatically continue after evaluating actions以後程序會在斷點產生後繼續運行。這個屬性是至關有用的,能夠輸入調試信息至於不暫停程序。

出了上面的基本斷點外,XCode還提供了下面四種斷點,須要點擊斷點面板左下角的+號添加。

duandian6.png

  • Exception Breakpoint

  • OpenGL ES Error Breakpoint

  • Symbolic Breakpoint

  • Test Failure Breakpoint

Exception Breakpoint

Exception Breakpoint是一個很是有用的斷點項。正如名字所示,當程序拋出異常的時候就回產生斷點。一般程序崩潰會停在崩潰的地方,但有時候並不能準確停在引發異常的地方。好比數組越界!好比我下圖所示,會引發數組越界訪問。 

duandian7.png

duandian8.png

程序運行的時候就會崩潰。可是崩潰停在了main函數裏面,就算看了棧信息也不能立刻定位到究竟是那個數組越界訪問了。爲何崩潰不能停在數組越界哪裏?這是由於數組越界訪問不必定會致使程序崩潰的,數組越界訪問會致使異常拋出,而拋出的異常沒有獲得處理纔會致使程序崩潰。所以最後會致使崩潰停在CoreFoundation框架裏面。這個時候就須要設置Exception Breakpoint產生斷點來定位錯誤了。

duandian10.png

duandian11.png

OpenGL ES Error Breakpoint

這個主要是OpenGL ES的斷點調試,這個我的沒用到過。

Symbolic Breakpoint

Symbolic Breakpoint,符號斷點,真的是調試神器啊。當程序運行到特定符號的時候就會產生斷點。經過這種方式添加斷點,就不須要在源文件中添加,也不須要知道斷點設置在文件的第幾行。如圖: 

duandian12.png

比普通斷點多了兩個屬性Symbol和Module。

Symbol

Symbol的內容,能夠有以下幾種: 

1. 方法名稱:會對全部具備此方法名稱的類方法生效。例如 initWithFrame: 。 

2. 特定類的方法:OC類和C++類都適用,例如 ,[UIView initWithFrame:]或者 Shap::draw()。 

3. 函數名稱。例如普通C函數。

經過設置Symbol來調試,好用根本停不下來,想怎麼斷點就怎麼斷點。

Test Failure Breakpoint

這個類型的斷點會在test assertion 失敗的時候暫停程序的執行。

相關文章
相關標籤/搜索