Xcode lldb常用調(diào)試命令及擴展

常用命令:

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命令擴展文件

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

參考鏈接:

lldb官方文檔
lldb常用命令與調(diào)試技巧

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市晓勇,隨后出現(xiàn)的幾起案子堂飞,更是在濱河造成了極大的恐慌,老刑警劉巖绑咱,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绰筛,死亡現(xiàn)場離奇詭異,居然都是意外死亡描融,警方通過查閱死者的電腦和手機别智,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稼稿,“玉大人薄榛,你說我怎么就攤上這事∪眉撸” “怎么了敞恋?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谋右。 經(jīng)常有香客問我硬猫,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任啸蜜,我火速辦了婚禮坑雅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘衬横。我一直安慰自己裹粤,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布蜂林。 她就那樣靜靜地躺著遥诉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪噪叙。 梳的紋絲不亂的頭發(fā)上矮锈,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音睁蕾,去河邊找鬼苞笨。 笑死,一個胖子當(dāng)著我的面吹牛子眶,可吹牛的內(nèi)容都是我干的猫缭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼壹店,長吁一口氣:“原來是場噩夢啊……” “哼猜丹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起硅卢,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤射窒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后将塑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脉顿,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年点寥,在試婚紗的時候發(fā)現(xiàn)自己被綠了艾疟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡敢辩,死狀恐怖蔽莱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情戚长,我是刑警寧澤盗冷,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站同廉,受9級特大地震影響仪糖,放射性物質(zhì)發(fā)生泄漏柑司。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一锅劝、第九天 我趴在偏房一處隱蔽的房頂上張望攒驰。 院中可真熱鬧,春花似錦故爵、人聲如沸玻粪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奶段。三九已至饥瓷,卻和暖如春剥纷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背呢铆。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工晦鞋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棺克。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓悠垛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親娜谊。 傳聞我的和親對象是個殘疾皇子确买,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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

  • 一、概述 LLDB全稱 [ Low Level Debugger ], 默認(rèn)內(nèi)置于Xcode中的動態(tài)調(diào)試工具纱皆。標(biāo)準(zhǔn)...
    Superman168閱讀 15,233評論 2 19
  • 一湾趾、基本介紹 LLDB是個開源的內(nèi)置于XCode的調(diào)試工具,它能幫助我們在開發(fā)中更快的定位和調(diào)試bug派草,無論正向和...
    默默_David閱讀 1,705評論 0 2
  • 一搀缠、LLDB 正向開發(fā)與逆向都經(jīng)常會用到LLDB調(diào)試,而熟悉LLDB調(diào)試對正向近迁、逆向開發(fā)都有很大的幫助,尤其是動態(tài)...
    KinKen閱讀 15,528評論 5 34
  • 相信大家肯定都有過為了調(diào)試而添加打印變量艺普,或者使用直接常量代替函數(shù)調(diào)用結(jié)果,或者更改判斷條件以進(jìn)入某特定分支的調(diào)試...
    縱橫而樂閱讀 1,960評論 0 3
  • 1.單步調(diào)試 單步調(diào)試通常分為兩大類鉴竭,一類為源碼級別(source level)歧譬,一類為指令級別(instruti...
    史貴嶺閱讀 4,050評論 1 9