這里介紹一下LLDB中關(guān)于斷點(diǎn)的強(qiáng)大功能的冰山一角馆类,有興趣的話直接在LLDB中輸入help就會(huì)有詳細(xì)的說(shuō)明文檔。這里只舉例一些經(jīng)常用到的。
根據(jù)函數(shù)名稱(chēng)
- breakpoint set -n 函數(shù)名稱(chēng)
OC方法
給ViewController類(lèi)中的 -touchesBegan:withEven: 方法添加斷點(diǎn)
輸入后回車(chē)诺舔,如果添加成功則會(huì)出現(xiàn)下面的提示:
然后如果真的成功了,你會(huì)發(fā)現(xiàn)即使把斷點(diǎn)的標(biāo)志置灰仍然會(huì)斷主:
C方法
根據(jù)行數(shù)
-
breakpoint set -l 行數(shù) -f 文件名
根據(jù)物理地址(反匯編用到卤唉,有時(shí)候調(diào)整BAD_EXC用到)
-
breakpoint set -a 16位的物理地址
根據(jù)函數(shù)全名設(shè)置斷點(diǎn)(非常有用涩惑,這個(gè)是一般打斷點(diǎn)無(wú)法比擬的)
-
breakpoint set -F 函數(shù)全名
*注:這里因?yàn)橐淮涡源蛄藘蓚€(gè)端點(diǎn),所以顯示的 Breakpint 1:2 locations桑驱。意思是添加了組號(hào)為1的斷點(diǎn)組竭恬,這組里包含兩個(gè)斷點(diǎn)跛蛋。
根據(jù)局部函數(shù)全名設(shè)置斷點(diǎn)
-
breakpoint set -r 函數(shù)局部名稱(chēng)
可以看到我這里給整個(gè)項(xiàng)目中包含 touchTest 的方法都打了斷點(diǎn)(touchTest1 和 touchTest2)
常用的配置項(xiàng)
- -i 設(shè)置斷點(diǎn)忽略次數(shù)
-i <count> ( --ignore-count <count> )
Set the number of times this breakpoint is skipped before stopping.
這里設(shè)置了跳躍2次,可以看出前兩次是沒(méi)有斷住的痊硕。
- -o 只斷住一次
-o <boolean> ( --one-shot <boolean> )
The breakpoint is deleted the first time it stop causes a stop.
- -o 設(shè)置斷點(diǎn)條件
-c <expr> ( --condition <expr> )
The breakpoint stops only if this condition expression evaluates to
true.
斷點(diǎn)條件是簡(jiǎn)單語(yǔ)句:
斷點(diǎn)條件是OC語(yǔ)句:
多條件斷點(diǎn):
- -N 給斷點(diǎn)添加別名
-N <breakpoint-name> ( --breakpoint-name <breakpoint-name> )
Adds this to the list of names for this breakpoint.