在iOS開發(fā)中常用的LLDB命令:
LLDB(Low-Level Debugger)是一個用于調(diào)試程序的開源軟件男旗。在iOS開發(fā)中剑肯,LLDB主要與Xcode集成观堂,用于調(diào)試Objective-C和Swift編寫的應(yīng)用程序师痕。LLDB能幫助開發(fā)者找出程序中的錯誤、分析程序運(yùn)行情況以及探究程序內(nèi)部狀態(tài)因篇。
使用LLDB竞滓,您可以:
設(shè)置斷點(diǎn):在程序的特定行停止執(zhí)行吹缔,以便您可以查看該時刻的狀態(tài)。
單步執(zhí)行:一行一行地執(zhí)行代碼茶没,以更好地理解程序的執(zhí)行過程晚碾。
查看變量值:查看程序中各種變量和數(shù)據(jù)結(jié)構(gòu)的值格嘁。
修改變量值:在調(diào)試過程中動態(tài)更改變量值,以測試不同的條件和情況涣易。
執(zhí)行表達(dá)式:在調(diào)試會話中執(zhí)行代碼冶伞,以便檢查和驗(yàn)證程序行為响禽。
調(diào)用堆棧跟蹤:查看函數(shù)調(diào)用堆棧,以了解當(dāng)前執(zhí)行上下文隆嗅。
LLDB提供了豐富的命令行接口胖喳,使開發(fā)者可以在調(diào)試會話中輸入命令贮竟。同時,Xcode也為LLDB提供了圖形界面技健,使調(diào)試更加直觀雌贱。了解LLDB的基本用法和常用命令可以幫助您更有效地找出和解決程序中的問題欣孤。
breakpoint set
(縮寫:br s
): 設(shè)置斷點(diǎn)昔逗。例如,breakpoint set --line 25
在第25行設(shè)置一個斷點(diǎn)搬瑰。
breakpoint list
(縮寫:br l
): 顯示已設(shè)置的所有斷點(diǎn)泽论。
breakpoint delete
(縮寫:br d
): 刪除一個或多個斷點(diǎn)翼悴。例如幔妨,breakpoint delete 1
刪除編號為1的斷點(diǎn)误堡。
breakpoint enable/disable
(縮寫:br en/dis
): 啟用或禁用一個或多個斷點(diǎn)锁施。
continue (縮寫:
c`): 從當(dāng)前位置繼續(xù)執(zhí)行程序杖们,直到遇到下一個斷點(diǎn)或程序結(jié)束摘完。
step (縮寫:
s`): 單步執(zhí)行一行代碼孝治。如果遇到函數(shù)調(diào)用审磁,會進(jìn)入該函數(shù)。
next (縮寫:
n`): 單步執(zhí)行一行代碼步绸。如果遇到函數(shù)調(diào)用瓤介,會跳過該函數(shù)刑桑。
finish
(縮寫:f
): 從當(dāng)前函數(shù)中返回祠斧,繼續(xù)執(zhí)行上一級函數(shù)。
thread backtrace
(縮寫:bt
): 顯示當(dāng)前線程的調(diào)用堆棧琢锋。
frame variable
(縮寫:fr v
): 顯示當(dāng)前堆棧幀的所有變量和參數(shù)吴超。
expression
(縮寫:expr
): 執(zhí)行一個表達(dá)式鲸阻∧胥玻可以用于查看奖年、修改變量值陋守,或執(zhí)行任意代碼。例如屏歹,expression myVariable = 5
蝙眶。
po
: 打印對象的描述褪那。與expression
類似幽纷,但適用于Objective-C
和Swift
對象。例如博敬,po myArray
友浸。
run
(縮寫:r
): 重新啟動并運(yùn)行程序。如果有設(shè)置啟動參數(shù)偏窝,可以在此命令后添加收恢。
thread list
(縮寫:th l
): 列出當(dāng)前進(jìn)程中的所有線程。
thread select
(縮寫:th s
): 選擇一個指定線程祭往。例如伦意,thread select 2
會切換到編號為2的線程。
frame select
(縮寫:fr s
): 選擇一個指定的堆棧幀硼补。例如驮肉,frame select 1
會切換到編號為1的堆棧幀。
frame info
(縮寫:fr i
): 顯示當(dāng)前堆棧幀的信息。
image list
(縮寫:im li
): 顯示程序中的所有加載的二進(jìn)制映像(包括應(yīng)用程序本身奖恰、系統(tǒng)框架和庫)。
breakpoint set --name
(縮寫:br s -n
): 根據(jù)函數(shù)名或方法名設(shè)置斷點(diǎn)蛹屿。例如,breakpoint set --name viewDidLoad
會在所有的viewDidLoad方法處設(shè)置斷點(diǎn)折联。
breakpoint set --selector
(縮寫:br s -S
): 根據(jù)Objective-C
方法選擇器設(shè)置斷點(diǎn)。例如,breakpoint set --selector viewDidLoad
抠艾。
breakpoint set --source-regex
(縮寫:br s -p
): 使用正則表達(dá)式匹配源代碼行來設(shè)置斷點(diǎn)。例如,breakpoint set --source-regex 'myFunction()'
脸狸。
watchpoint set variable (縮寫:w s v
): 設(shè)置一個觀察點(diǎn),以便在指定變量值發(fā)生更改時中斷程序。例如颈娜,watchpoint set variable myVariable粟瞬。
watchpoint list
(縮寫:w l
): 列出已設(shè)置的觀察點(diǎn)俗批。
watchpoint delete
(縮寫:w d
): 刪除一個或多個觀察點(diǎn)辛慰。例如,watchpoint delete 1
。
settings show
: 顯示LLDB當(dāng)前的配置設(shè)置。
settings set
: 修改LLDB的配置設(shè)置臣镣。例如阔蛉,settings set target.language swift
將目標(biāo)語言設(shè)置為Swift
。
register read
: 讀取并顯示處理器寄存器的值削锰。
register write
: 修改處理器寄存器的值朋截。例如稳摄,register write rax 0x100
將寄存器RAX的值設(shè)置為0x100
。
memory read
(縮寫:me r
): 讀取并顯示內(nèi)存中的數(shù)據(jù)昌讲。例如筹裕,memory read 0x100000
。
memory write
(縮寫:me w
): 將數(shù)據(jù)寫入內(nèi)存。例如龙宏,memory write 0x100000 0x42
。
disassemble
(縮寫:di
): 反匯編當(dāng)前函數(shù)或指定地址的機(jī)器代碼。
breakpoint command add
: 為特定斷點(diǎn)添加一個或多個自定義命令。當(dāng)斷點(diǎn)被觸發(fā)時,這些命令將自動執(zhí)行部默。例如,breakpoint command add 1 -o "expr myVariable = 5"
犁功。
breakpoint set --file
(縮寫:br s -f
): 在指定文件的特定行設(shè)置斷點(diǎn)限嫌。例如裆熙,breakpoint set --file main.swift --line 25
。
breakpoint set --symbol
(縮寫:br s -s
): 根據(jù)符號名設(shè)置斷點(diǎn)。例如,breakpoint set --symbol myFunction
。
breakpoint set --address
(縮寫:br s -a
): 根據(jù)內(nèi)存地址設(shè)置斷點(diǎn)娜睛。例如障斋,breakpoint set --address 0x100000
晴裹。
breakpoint modify
: 修改已設(shè)置斷點(diǎn)的屬性泌绣。例如苗沧,breakpoint modify --ignore-count 5 1
忽略編號為1的斷點(diǎn)的前5次觸發(fā)。
target create
: 創(chuàng)建一個新的調(diào)試目標(biāo)嗤无。例如,target create myExecutable
。
target list
: 顯示所有調(diào)試目標(biāo)。
target select
: 選擇一個特定的調(diào)試目標(biāo)。例如,target select 1
烙常。
target modules search-paths add
: 添加模塊搜索路徑。例如,target modules search-paths add /path/to/libs
题篷。
breakpoint set --source-pattern-regexp
: 使用正則表達(dá)式匹配源代碼行來設(shè)置斷點(diǎn)户辫。例如渔欢,breakpoint set --source-pattern-regexp 'myFunction()'
。
breakpoint set --fullname
: 根據(jù)完整的文件名和行號設(shè)置斷點(diǎn)。例如切威,breakpoint set --fullname /path/to/file/main.swift:25
。
thread until
(縮寫:th u
): 在當(dāng)前線程中執(zhí)行指令,直到指定的行號就漾。例如,thread until 25
棚壁。
thread jump
(縮寫:th j
): 在當(dāng)前線程中跳過指定的行數(shù)袖外。例如蚣驼,thread jump --by 2
纯陨。
process load/unload
: 加載或卸載動態(tài)庫获讳。例如偎肃,process load /path/to/libMyLibrary.dylib
紊馏。
process signal
: 向當(dāng)前進(jìn)程發(fā)送信號。例如产还,process signal SIGINT
匹厘。
process save-core
: 保存當(dāng)前進(jìn)程的核心轉(zhuǎn)儲。例如脐区,process save-core /path/to/dump/core.dump
愈诚。
type summary add
: 為自定義類型添加摘要。例如牛隅,type summary add --summary-string "x = ${var.x}, y = ${var.y}" MyPoint
炕柔。
breakpoint set --one-shot
(縮寫:br s -o
): 設(shè)置一次性斷點(diǎn)。該斷點(diǎn)在觸發(fā)一次后自動刪除媒佣。例如匕累,breakpoint set --one-shot --line 25
。
expression --top-level
: 在頂層上下文中執(zhí)行表達(dá)式默伍,而不是當(dāng)前堆棧幀欢嘿。例如,expression --top-level -- myGlobalVariable = 42
巡验。
type format add
: 為類型添加自定義格式际插。例如,type format add --format hex MyIntegerType
显设。
type lookup
: 查找指定類型的信息框弛。例如,type lookup MyCustomClass
捕捂。
type category enable/disable
: 啟用或禁用特定類型的分類瑟枫。例如,type category enable myCategory
指攒。
source list
: 列出當(dāng)前堆棧幀所在源文件的源代碼慷妙。
source info
: 顯示當(dāng)前堆棧幀所在源文件的信息。
alias
: 為常用的LLDB命令創(chuàng)建別名允悦。例如膝擂,alias b breakpoint set
。
unalias
: 刪除之前創(chuàng)建的別名隙弛。例如架馋,unalias b
。
settings append
: 向配置設(shè)置添加一個值全闷。例如叉寂,settings append target.source-map /old/path /new/path
。
settings replace
: 替換配置設(shè)置中的一個值总珠。例如屏鳍,settings replace target.source-map /old/path /new/path
勘纯。
settings remove
: 刪除配置設(shè)置中的一個值。例如钓瞭,settings remove target.source-map /old/path
驳遵。