常用命令:
Debugger commands:
... 常用命令
help -- 顯示lldb支持命令列表
print -- 簡寫為p贞间;打印茉帅,常用于打印值類型量
po -- 打印瘫絮,常用于打印引用類型量
expression -- 簡寫為expr;計算當(dāng)前線程上的表達(dá)式私恬。用LLDB的默認(rèn)格式顯示任何返回值债沮。
frame -- 簡寫為fr;用于選擇和檢查當(dāng)前線程的堆棧幀的命令本鸣。
... 進(jìn)程命令
thread list -- 線程列表
thread backtrace all -- 所有線程堆棧打印信息
thread backtrace -- 當(dāng)前線程堆棧打印信息
thread backtrace 2 -- 2線程堆棧打印信息
frame info -- 棧幀信息
frame variable -- 簡寫fr v疫衩;幀變量列表
frame select 0 -- 選擇幀
...
...寄存器
register read -- 讀取寄存器,默認(rèn)為all荣德,可以指定某個寄存器
register write rax 123 -- 寫入寄存器
...
... 符號斷點
breakpoint -- 用于在斷點上操作的命令(簡寫請參閱‘help b’)
breakpoint list -- 斷點列表
breakpoint set -address 0x10dde2cf0 -- 用函數(shù)地址設(shè)置斷點
breakpoint set -name persionInfo -- 用函數(shù)名稱設(shè)置斷點
... 內(nèi)存讀取
memory read/數(shù)量+格式+字節(jié)數(shù) 內(nèi)存地址 -- 簡寫x闷煤;讀取內(nèi)存,默認(rèn)二進(jìn)制讀取
x/數(shù)量+格式+字節(jié)數(shù) 內(nèi)存地址 -- 讀取內(nèi)存涮瞻,默認(rèn)二進(jìn)制讀取
memory write 內(nèi)存地址 數(shù)值 -- 寫入內(nèi)存
...
... 鏡像
image list -- 依賴庫列表
image lookup -type 類型 -- 查看類/結(jié)構(gòu)體的所有屬性和方法
image lookup -name 符號或函數(shù)名 -- 查找某個符號或者函數(shù)的位置
image lookup -address 地址 -- 根據(jù)內(nèi)存地址查找在模塊中的位置
...
Current user-defined container commands:
cat -- No help text
例子:
(lldb) p a // 打印a變量
(lldb) po persion // 打印persion引用類型的變量的地址
(lldb) po withUnsafePointer(to: &persion) {print($0)} // 打印persion值類型的變量的地址
(lldb) expr tableView.backgroundColor = UIColor.red // 修改背景顏色
(lldb) fr v -R a // 查看變量類型結(jié)構(gòu)
(lldb) x/4gx person // 查看變量的內(nèi)存
內(nèi)存讀取的說明:
例子:
(lldb) x/4gx person(引用變量)/0x600000c9d170
x/4gx person:
x
是讀取內(nèi)存命令鲤拿,4
表示連續(xù)讀取4段內(nèi)存,后面的g
是每段內(nèi)存按8字節(jié)讀取署咽,第二個x
的表示每段讀取的結(jié)果按16進(jìn)制顯示近顷, person
是要讀取內(nèi)存的變量。
完整的意思是:讀取person
變量的內(nèi)存按8字節(jié)分段,連續(xù)讀取4段內(nèi)存幕庐,讀取的每段內(nèi)存用16進(jìn)制顯示。
- 對于命令中的
g
家淤,常用的大小格式為b
對應(yīng)byte 1字節(jié)异剥,h
對應(yīng)half word 2字節(jié),w
對應(yīng)word 4字節(jié)絮重,g
對應(yīng)giant word 8字節(jié) - 對于命令中的第二個
x
冤寿,我們還可以用o
對應(yīng)8機制,b
對應(yīng)2進(jìn)制青伤,x
對應(yīng)16進(jìn)制督怜,f
對應(yīng)浮點,d
對應(yīng)10進(jìn)制狠角。
cat命令:
cat命令是額外的擴展命令号杠,需要安裝特殊的擴展文件才能使用。
1. 下載lldb命令擴展文件
2.在用戶目錄下添加.lldbinit文件
添加.lldbinit文件的路徑:
/Users/用戶名
有兩種方法:
1.使用vim命令丰歌,依次執(zhí)行命令:
cd /Users/用戶名
vim ~/.lldbinit
最后添加文本內(nèi)容:
plugin load 下載的lldb擴展文件夾下libfooplugin.dylib文件在計算機上的絕對路徑
2.外部復(fù)制或者移入:
桌面復(fù)制一個txt文件命名為.lldbinit
姨蟋;
然后打開該文件,文件添加文本內(nèi)容:
plugin load 下載的lldb擴展文件夾下libfooplugin.dylib文件在計算機上的絕對路徑
最后將桌面的文件復(fù)制或者移入 /Users/用戶名 路徑中立帖。
重啟Xcode就可以使用cat命令了眼溶。
例子:
(lldb) cat address 0x1077b3cf0
&0x1077b3cf0, Swift_framwork.ZBYSwiftAdvanceViewController.PersionModel.persionInfo() -> () <+0> , ($s14Swift_framwork29ZBYSwiftAdvanceViewControllerC12PersionModelV11persionInfoyyF)Swift-framwork.__TEXT.__text