一、異常斷點
作用:可以定位到導致程序異常崩潰的那行代碼。
好處:一些類在不滿足條件時(如數組越界),會拋出異常導致程序崩潰,可在Log中只能顯示異常類型和調用棧的內存地址,很難定位到導致異常的具體代碼,而通過添加異常斷點,可以在程序崩潰時,定位到導致崩潰的異常所在的那行代碼。
使用方法:在XCode左邊視圖中,切到斷點面板,點擊左下角的加號,選擇“Add Exception BreakPoint",就會添加一條異常斷點。
二、條件斷點
作用:當滿足某種條件時,程序才會在斷點處暫停。
好處:這個老話題了,和Eclipse、VS一樣,在特定場合提高調試效率,不用讓程序不斷的在斷點處暫停,可以通過代碼設置一個條件,也可以讓程序忽略斷點多少次,還可以設置在命中斷點時執(zhí)行debug命令。
使用方法:在斷點處右擊,選擇"Edit Breakpoint...",在彈框中設置條件。PS:添加刪除斷點快捷方式:在代碼行處"command+\"
三、運行時變量顯示
作用:在程序運行時,獲取成員對象的值
使用方法:1)通過NSLog()輸出值 ; 2)通過斷點暫停程序,在下面的窗口中,左側可以顯示對象樹的信息,在右側控件臺中通過命令輸出值。"p x"打印輸出變量,"po x"打印輸出對象,“po [xxviewrecursiveDescription]"打印view樹信息。
四、日志輸出
作用:通過在程序中添加NSLog代碼,在控件臺中輸出顯示日志。
注意事項:1)要通過宏可以在發(fā)布版中關閉這些日志輸出,因為它可能會泄漏一些敏感數據,AppStore在審核時,會拒掉輸出比較多Log的應用; ?2)可以通過__FILE__, __LINE__, __PRETTY_FUNCTION__, NSStringFromSelector(__cmd)打印出文件名,行號,函數名
五、靜態(tài)分析
作用:通過對代碼靜態(tài)分析,找出代碼潛在的錯誤,如內存泄漏、空引用、未使用函數等。
方法:菜單“Product"->"Analyze"
六、動態(tài)分析
作用:通過Instruments工具跟蹤分析程序運行時的數據
方法:菜單"Product"->"Profile"打開Instruments工具,里面有一系列內存、CPU、I/O等資源跟蹤分析的工具,apple developer網站上有專門的文檔介紹每種工具的使用方法