最近看了一篇挺好的文章(快速開發iOSApp),雖然是iOS的文章但是有提到一段是關於XCode debugger的進階運用教學
當然這裡提到的不是hit count,condition 那一系列的用法.
這裡有影片,可能需要iOS Dev 帳號 (影片1) (影片2)
裡面最好用(最近)的就是直接利用break point 去印一些文字幫助你debug
-
設立一個breakpoint
-
使用右鍵Edit breakpoint
-
“Add action”-> 印出你需要的物件(po XXX 或是 expr (void)NSLog(@“%f”, XXX)
-
點選”Automatically continue after evaluating”
這裡有官方文件,不過還是影片教學比較好.
回過頭來也去研究微軟的Vistual Studio 看看有沒有類似的功能.沒有那麼強大~但是其實也是有的.以下是VS2013的設定步驟:
-
建立一個Breakpoint
-
一樣使用右鍵,選取”When Hit”
-
印出你要的字,這裡如果要印出變數~多做一些功…
這裡有完整的說明,可以參考…
兩者(Xcode 5 V.S. VS2013 SP1) 比較一下
-
VS2013
- 只可以印出資訊 (參考 DebuggerDisplayAttribute ) 可以直接“{變數}”來列印
-
XCode
-
不僅僅可以列印變數,影片中甚至建議你可以利用這個去新增或是變更你的breakpoint.
-
基本上 Add Action 所以任何Action都可以思考.
- 影片中有提到可以使用 AppleScript 去寄信給你當任何exception 發生的時候.這樣一來可以跑overnight testing 隔天再來看結果就好了.
-
但是如同前面提到的,需要跑一些特殊的動作的時候.確認不會變動到你的邏輯.
-
使用這個的好處是什麼?
-
不用改code,不用一個個breakpoint 停下來看.馬上可以了解程式的流程….
-
不用切換到debug version,可以直接在release來利用印出文字了解流程,但是release版本無法正確印出變數(除非是managed code). 很多問題都只發生在release version你懂得. (尤其是客戶手上的那版 XD)
但是其實也是有一些缺點:
-
變得慢.. 別忘了任何的breakpoint 都是在程式內部增加 interrupt 所以一定變慢(VS2013上還挺明顯的)
-
當你試著要做某些動作的時候,有可能會變更IDE內部的動作.這個在XCode的演講裡面有提到,可以詳細去看…