iOS實(shí)際開發(fā)中,我們經(jīng)常會(huì)用到斷點(diǎn)調(diào)試,一般很多使用的只是簡單功能。這里介紹幾個(gè)你可能需要知道的小技巧,會(huì)提升你的調(diào)試效率。
一、條件語句Condition的使用

image.png
使用場景:有個(gè)公共方法funcComon(),可能被多處調(diào)用(比如被A、B、C、D...),其實(shí)我們只想知道在被C調(diào)用時(shí),funcComon()的數(shù)據(jù),此時(shí)就可以用Condition了。
下面我模擬個(gè)例子,比如有個(gè)循環(huán),我想知道第10次調(diào)用時(shí)的數(shù)據(jù),我就可以在Condition里寫上 條件語句 i == 10,滿足該條件時(shí),斷點(diǎn)才生效。

image.png
當(dāng)然還有笨辦法,不在斷點(diǎn)里加,直接寫個(gè)if(i==10)的代碼判斷語句。綜合對(duì)比還是直接在斷點(diǎn)里加Condition 更方便。

image.png
二、Action的使用
Action是指觸發(fā)斷點(diǎn)時(shí),你還想執(zhí)行哪些附加操作:
Debugger Command
1、使用較多的就是控制臺(tái)打印變量信息,如圖

image.png
2、改變數(shù)據(jù),滿足指定條件,方便調(diào)試,通過lldb 的 expression 命令
本來方法調(diào)用方傳來的是“張三”,通過expression 修改,最后變?yōu)?李四。

image.png
三、全局符號(hào)斷點(diǎn)
當(dāng)執(zhí)行到對(duì)應(yīng)的函數(shù)名時(shí),就會(huì)觸發(fā),有多個(gè)相同的方法名,就會(huì)對(duì)應(yīng)的觸發(fā)。
使用場景,工程結(jié)構(gòu)比較復(fù)雜,分的bunddle比較多,調(diào)用關(guān)系比較復(fù)雜,但是我知道最后的調(diào)用方法為funA(),想知道調(diào)用棧,就可以使用全局符號(hào)斷點(diǎn)。

image.png
符號(hào)斷點(diǎn)使用時(shí),要注意一下幾點(diǎn):
1、方法名不帶參數(shù)、帶參數(shù)、帶多個(gè)參數(shù)時(shí),空格和分號(hào)要使用正確
注意動(dòng)態(tài)方法開頭用“-”,靜態(tài)方法開頭用“+”
-[UIViewController viewDidLoad]
-[UIView addSubview:]
-[UIViewController dismissViewControllerAnimated:completion:]
2、屬性的調(diào)試技巧,一般都是用setXXX
-[UILabel setNumberOfLines:]
3、通過lldb獲取對(duì)應(yīng)的信息
po $arg1 //對(duì)象本身,調(diào)用的類
po (SEL)$arg2 //是方法第二個(gè)參數(shù)也就是 SEL
po $arg3 //第一個(gè)參數(shù)

image.png
參考
iOS 斷點(diǎn)調(diào)試
最全面的 iOS 斷點(diǎn)調(diào)試
Xcode symbolic breakpoints - Break at method call