iOS斷點(diǎn)使用

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容