iOS開發來說,斷點調試時必不可少的,以前一直在用“Exceptions breakpoint(全局或異常斷點)”進行調試,但是最近寫的程序有時異常崩潰后,會給出讓用Symbolic Breakpoint 去調試,才開始注意到這個有叫做“符號斷點”的東西,以前還真沒怎么用過,找了下網上的文章,沒發現特別好的,下面的這個文章做了些基本的應用介紹,把這個分享給大家,如果大家有好的關于這方面的文字請在評論中分享給我,謝謝!
轉自:http://blog.csdn.net/xiepanqi/article/details/50890038
http://stackoverflow.com/questions/26389273/how-to-trap-on-uiviewalertforunsatisfiableconstraints
使用
- 創建斷點
symbolic breakpoint使用很簡單,點擊斷點界面的“+”號,選擇”Add Symbolic Breakpoint”就創建了一個斷點
-
編輯斷點
創建好后會直接彈出斷點編輯界面,也可以通過右擊斷點選擇”Edit Breakpoint…”進入編輯界面。
Paste_Image.png 下面開始最重要部分,斷點的可編輯項。 從編輯界面可以看到斷點可編輯的項有Symbol、Module、Condition、Ignore、Action、Options。
Symbol
斷點觸發函數。有兩種函數寫法,一種是C函數樣式,一種是OC方法樣式。 C函數樣式只需要寫函數名,不用寫后面的()和參數。例如NSLog
。 OC方法樣式的[className methodName] className是類名,methodName是方法名(不區分類方法和實例方法)。如果寫標記的這個類的方法被子類重寫了則子類的方法也會觸發斷點。例如[UIViewController viewDidLoad]
。Module
模塊篩選??梢员苊獠煌瑤熘蟹椒蛘吆瘮得嗤?/p>-
Condition
觸發條件。這里可以添加一些指定觸發條件,比如添加第一個參數不能為nil。這里$arg3代表第1個參數,$arg4代表第2個參數,以此類推。這里也可以調用方法來判斷,但必須是類方法,并且返回值必須為BOOL類型。 樣例:找出給[UIImage imageNamed:]傳nil的代碼。這里就需要設置Symbol為[UIImage imageNamed:],然后Condition設置為$arg3 == nil。這樣在運行中如果遇到傳nil就會觸發斷點。
Paste_Image.png Ignore
觸發開始次數。設置這個值可以忽略前面指定次數的觸發。Action
觸發活動。這里是當斷點觸發后要執行的動作,可以添加多條,執行的順序是從上到下。一共有6種可執行類型。AppleScript
會在斷點觸發的時候執行Mac OS X內置的一種功能強大的腳本語言,具體寫法可以自行百度AppleScript。Capture GPU Frame
GPU幀捕獲,具體作用還沒研究出來。Debugger Command
會在斷點觸發的時候執行LLDB命令??梢源蛴ο?、修改對象值等功能。Log Message
會在斷點觸發的時候打印日志。其中@exp@打印對象值,exp為對象名;%B表示斷點名;%H表示當前斷點觸發的次數。Shell Command
會在斷點觸發的時候執行Shell命令。Sound
觸發聲音。感覺很炫酷,但沒點用的功能。適合裝逼。Options
是否進入DEBUG界面。勾選這個斷點觸發后不進入DEBUG界面,斷點打印日志或者聲音斷點一般都勾選。