lldb一般用來(lái)調(diào)試自己的程序。最常見就是在代碼左邊單擊進(jìn)行調(diào)試诚镰。但是有個(gè)情況你是看不到代碼的揪惦。比如引入三方sdk 逆向等遍搞。這時(shí)候用命令來(lái)進(jìn)行調(diào)試是十分必要的。
1器腋,breakpoint set -n XXX 設(shè)置斷點(diǎn)
-n 是--name的縮寫尾抑。
c函數(shù) XXX 直接寫函數(shù)名就行了
OC 需要加類名 +方法名
例如:breakpoint set -n "-[ViewController logDog]"
如果有參數(shù)的:
breakpoint set -n "-[ViewController logDog:]"
并且設(shè)置多次的可以一句設(shè)置完畢
breakpoint set -n "-[ViewController logDog:]" -n "-[ViewController logCat:]"
2,breakpoint list
這個(gè)命令是查看斷點(diǎn)列表的
3breakpoint enable disable
字面意思 將斷點(diǎn)設(shè)置為可用不可用,后邊加第2命令的編號(hào)
如breakpoint enable 2.1
4,lldb 斷點(diǎn)狀態(tài)下 c命令是繼續(xù)下一步 進(jìn)入到下個(gè)斷點(diǎn)
5,breakpoint delete
后邊直接加組號(hào)蒂培。如breakpoint delete 1
但是不能刪除組里面的一個(gè),只能刪除組榜苫,刪除組其中一個(gè)會(huì)disable 不會(huì)真刪除
6护戳,breakpoint set --selector XXX
將項(xiàng)目中所有叫XXX的斷點(diǎn)
如:
breakpoint set --selector touchesBegan:withEvent:
Breakpoint 7: 74 locations.
7,breakpoint set --file xxx --selector XXX
設(shè)置某個(gè)文件中叫xxx的方法斷點(diǎn)
8,breakpoint set -r xxx
遍歷方法名稱設(shè)置斷點(diǎn) 遍歷整個(gè)項(xiàng)目包含XXX的方法 進(jìn)行斷點(diǎn)
9垂睬,p 是 'expression --'可以執(zhí)行代碼
如 p self.view.backgroundColor = [UIColor redColor];
ctrl+回車 p的代碼可以換行
10,bt查看調(diào)用堆棧
11媳荒,up down查看上一個(gè) 下一個(gè)調(diào)用方法
12,frame select 3
查看選中方法的匯編或者代碼
13驹饺,frame variable 查看方法的所有參數(shù)
如:frame variable
(int) argc = 1
(char **) argv = 0x00007ffeeb46f060
14,代碼回滾 thread return
不會(huì)再執(zhí)行當(dāng)前代碼以后的代碼
15,流程控制C continue繼續(xù)往下走 n next繼續(xù)走 不會(huì)進(jìn)入函數(shù) 將函數(shù)看做一句代碼
s step in將進(jìn)入函數(shù)進(jìn)行執(zhí)行
16钳枕,將對(duì)某個(gè)對(duì)象的某個(gè)屬性進(jìn)行斷點(diǎn)
watchpoint set variable p->_name
每當(dāng)name改變的時(shí)候進(jìn)入斷點(diǎn) 內(nèi)存斷點(diǎn)
17break command add 編號(hào)
進(jìn)入斷點(diǎn)執(zhí)行命令
breakpoint command add 1.1
Enter your debugger command(s). Type 'DONE' to end.
po self
po self.view
frame variable
DONE
結(jié)果
po self
<ViewController: 0x7fb145c0a0c0>
po self.view
<UIView: 0x7fb145e07380; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x604000425360>>
frame variable
(ViewController *) self = 0x00007fb145c0a0c0
(SEL) _cmd = "touchesBegan:withEvent:"
(__NSSetM *) touches = 0x0000600000226320 1 element
(UITouchesEvent *) event = 0x000060400010f930
(Person *) p = 0x000060000001b690