iOS開(kāi)發(fā)來(lái)說(shuō),斷點(diǎn)調(diào)試時(shí)必不可少的,以前一直在用“Exceptions breakpoint(全局或異常斷點(diǎn))”進(jìn)行調(diào)試,但是最近寫(xiě)的程序有時(shí)異常崩潰后,會(huì)給出讓用Symbolic Breakpoint 去調(diào)試,才開(kāi)始注意到這個(gè)有叫做“符號(hào)斷點(diǎn)”的東西,以前還真沒(méi)怎么用過(guò),找了下網(wǎng)上的文章,沒(méi)發(fā)現(xiàn)特別好的,下面的這個(gè)文章做了些基本的應(yīng)用介紹,把這個(gè)分享給大家,如果大家有好的關(guān)于這方面的文字請(qǐng)?jiān)谠u(píng)論中分享給我,謝謝!
轉(zhuǎn)自:http://blog.csdn.net/xiepanqi/article/details/50890038
http://stackoverflow.com/questions/26389273/how-to-trap-on-uiviewalertforunsatisfiableconstraints
使用
- 創(chuàng)建斷點(diǎn)
symbolic breakpoint使用很簡(jiǎn)單,點(diǎn)擊斷點(diǎn)界面的“+”號(hào),選擇”Add Symbolic Breakpoint”就創(chuàng)建了一個(gè)斷點(diǎn)

-
編輯斷點(diǎn)
創(chuàng)建好后會(huì)直接彈出斷點(diǎn)編輯界面,也可以通過(guò)右擊斷點(diǎn)選擇”Edit Breakpoint…”進(jìn)入編輯界面。
Paste_Image.png 下面開(kāi)始最重要部分,斷點(diǎn)的可編輯項(xiàng)。 從編輯界面可以看到斷點(diǎn)可編輯的項(xiàng)有Symbol、Module、Condition、Ignore、Action、Options。
Symbol
斷點(diǎn)觸發(fā)函數(shù)。有兩種函數(shù)寫(xiě)法,一種是C函數(shù)樣式,一種是OC方法樣式。 C函數(shù)樣式只需要寫(xiě)函數(shù)名,不用寫(xiě)后面的()和參數(shù)。例如NSLog
。 OC方法樣式的[className methodName] className是類(lèi)名,methodName是方法名(不區(qū)分類(lèi)方法和實(shí)例方法)。如果寫(xiě)標(biāo)記的這個(gè)類(lèi)的方法被子類(lèi)重寫(xiě)了則子類(lèi)的方法也會(huì)觸發(fā)斷點(diǎn)。例如[UIViewController viewDidLoad]
。Module
模塊篩選??梢员苊獠煌瑤?kù)中方法名或者函數(shù)名相同。-
Condition
觸發(fā)條件。這里可以添加一些指定觸發(fā)條件,比如添加第一個(gè)參數(shù)不能為nil。這里$arg3代表第1個(gè)參數(shù),$arg4代表第2個(gè)參數(shù),以此類(lèi)推。這里也可以調(diào)用方法來(lái)判斷,但必須是類(lèi)方法,并且返回值必須為BOOL類(lèi)型。 樣例:找出給[UIImage imageNamed:]傳nil的代碼。這里就需要設(shè)置Symbol為[UIImage imageNamed:],然后Condition設(shè)置為$arg3 == nil。這樣在運(yùn)行中如果遇到傳nil就會(huì)觸發(fā)斷點(diǎn)。
Paste_Image.png Ignore
觸發(fā)開(kāi)始次數(shù)。設(shè)置這個(gè)值可以忽略前面指定次數(shù)的觸發(fā)。Action
觸發(fā)活動(dòng)。這里是當(dāng)斷點(diǎn)觸發(fā)后要執(zhí)行的動(dòng)作,可以添加多條,執(zhí)行的順序是從上到下。一共有6種可執(zhí)行類(lèi)型。AppleScript
會(huì)在斷點(diǎn)觸發(fā)的時(shí)候執(zhí)行Mac OS X內(nèi)置的一種功能強(qiáng)大的腳本語(yǔ)言,具體寫(xiě)法可以自行百度AppleScript。Capture GPU Frame
GPU幀捕獲,具體作用還沒(méi)研究出來(lái)。Debugger Command
會(huì)在斷點(diǎn)觸發(fā)的時(shí)候執(zhí)行LLDB命令??梢源蛴?duì)象、修改對(duì)象值等功能。Log Message
會(huì)在斷點(diǎn)觸發(fā)的時(shí)候打印日志。其中@exp@打印對(duì)象值,exp為對(duì)象名;%B表示斷點(diǎn)名;%H表示當(dāng)前斷點(diǎn)觸發(fā)的次數(shù)。Shell Command
會(huì)在斷點(diǎn)觸發(fā)的時(shí)候執(zhí)行Shell命令。Sound
觸發(fā)聲音。感覺(jué)很炫酷,但沒(méi)點(diǎn)用的功能。適合裝逼。Options
是否進(jìn)入DEBUG界面。勾選這個(gè)斷點(diǎn)觸發(fā)后不進(jìn)入DEBUG界面,斷點(diǎn)打印日志或者聲音斷點(diǎn)一般都勾選。

