NSLog 應該是最基本的調(diào)試方法雳攘,但是 NSLog 也有一些問題,比如
- 需要提前設置宏状知,在 release 版本中避免瘋狂打印
- NSLog 比較耗費資源耙箍,Apple 本身設計其為打印錯誤日志,是對系統(tǒng)級打印的封裝
為了避免這些問題瞬痘,我們可以利用 Xcode 中的斷點調(diào)試工具調(diào)試,也可以利用 lldb 斷點調(diào)試板熊,這篇我們先看看 Xcode 中的打斷點吧~
調(diào)試斷點框全,依賴于父進程和子進程之間的通信,打斷點實際是在被調(diào)試的程序中干签,改變斷點附近程序的代碼津辩,這個斷點使得被調(diào)試的程序,暫時停止,然后發(fā)送信號給父進程(調(diào)試器進程)喘沿,然后父進程能夠得到子進程的變量和狀態(tài)闸度,達到調(diào)試的目的。
Breakpoint
打一個斷點誰都會蚜印,但是除了單單打斷點之外莺禁,我們還可以通過編輯這個斷點,設置一些觸發(fā)窄赋、過濾條件來調(diào)試代碼:
Condition
設置條件斷點哟冬,寫一些簡單的判斷,使程序在滿足一定條件才會停下來
Ignore
可以忽略前n次忆绰,到n+1次再停下來
Action
給斷點設置一些事件浩峡,里面包含很多事件
AppleScript
AppleScript是蘋果公司開發(fā)的一種腳本語言,可以用來控制運行于Mac OS上的程序错敢,也可以寫成獨立運行的Applet翰灾。類似于英語,直觀稚茅,易讀预侯。
我們簡單設置一段AS:
Capture GPU Frame
用于OpenGL ES調(diào)試,捕獲斷點處GPU當前繪制幀抛人。
Debugger Command
這個與在控制臺中輸入 LLDB 命令一致虹蒋,輸入 po + OC對象糜芳,打印這個OC對象,輸入 p + 基本數(shù)據(jù)類型變量魄衅,打印這個變量峭竣。
下一篇文章我會對這個方面進行總結,敬請期待晃虫。
Log Message
在 Log Message 中輸入命令皆撩,可以直接在控制臺輸出,有意思的是哲银,還可以選擇 Speak message ,讓 siri 幫你讀出這些信息扛吞。
Shell Command
在 Shell Command 中輸入Shell 命令,到此斷點時荆责,會運行輸入的
Shell命令滥比。
Sound
還有一個比較好玩的 Action 是 Sound做院,它會在觸發(fā)斷點時發(fā)出響聲盲泛,我們可以在一些不能時刻關注到的代碼設置這個斷點濒持,運行時,發(fā)出響聲提示我們一些信息寺滚。
全局斷點
除了給特定代碼行設置斷點以外,我們還可以設置全局斷點村视,如圖:
Exception Breakpoint
異常斷點在每次程序發(fā)生了異常時官套,都會被中斷,一般用來捕獲一些未知的異常蓖议,這個大家應該都比較熟悉虏杰。
Symbolic Breakpoint
符號斷點可以在運行到設置的特定函數(shù)時,被中斷勒虾。
講完了 Breakpoint 的調(diào)試技巧纺阔,下一篇我們說一下 lldb 的調(diào)試方法,總的來說修然,Breakpoint 能做的笛钝,lldb 也能做;而 lldb 能做的愕宋,Breakpoint 可不一定能做玻靡,所以敬請期待喲??