LLDB命令集合

在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-CSwift對象。例如博敬,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驳遵。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市山涡,隨后出現(xiàn)的幾起案子超埋,更是在濱河造成了極大的恐慌,老刑警劉巖佳鳖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霍殴,死亡現(xiàn)場離奇詭異,居然都是意外死亡系吩,警方通過查閱死者的電腦和手機(jī)来庭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來穿挨,“玉大人月弛,你說我怎么就攤上這事】剖ⅲ” “怎么了帽衙?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贞绵。 經(jīng)常有香客問我厉萝,道長,這世上最難降的妖魔是什么榨崩? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任谴垫,我火速辦了婚禮,結(jié)果婚禮上母蛛,老公的妹妹穿的比我還像新娘翩剪。我一直安慰自己,他們只是感情好彩郊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布前弯。 她就那樣靜靜地躺著,像睡著了一般秫逝。 火紅的嫁衣襯著肌膚如雪恕出。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天筷登,我揣著相機(jī)與錄音剃根,去河邊找鬼哩盲。 笑死前方,一個胖子當(dāng)著我的面吹牛狈醉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惠险,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼苗傅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了班巩?” 一聲冷哼從身側(cè)響起渣慕,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抱慌,沒想到半個月后逊桦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抑进,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年强经,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寺渗。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡匿情,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出信殊,到底是詐尸還是另有隱情炬称,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布涡拘,位于F島的核電站玲躯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鳄乏。R本人自食惡果不足惜府蔗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汞窗。 院中可真熱鬧姓赤,春花似錦、人聲如沸仲吏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽裹唆。三九已至誓斥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間许帐,已是汗流浹背劳坑。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留成畦,地道東北人距芬。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓涝开,卻偏偏與公主長得像,于是被迫代替她去往敵國和親框仔。 傳聞我的和親對象是個殘疾皇子舀武,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容