LLDB

常用命令

expression

expression命令的作用是執(zhí)行一個表達式件舵,并將表達式返回的結(jié)果輸出薄霜。expression的完整語法是這樣的:
expression <cmd-options> -- <expr>
expression <命令選項> “-- --”分隔符 執(zhí)行的參數(shù)或表達式
對應的例子如下:

(lldb) expression -O -- self
<ViewController: 0x7f9000f17660>

expression是lldb里面最重要的命令普碎。他能實現(xiàn)2個非常重要的功能:

  • 執(zhí)行表達式艾帐。
    在程序暫停時,可以通過lldb調(diào)試器直接修改頁面屬性跷敬,而不需要重新運行程序
// 改變顏色
(lldb) expression -- self.view.backgroundColor = [UIColor redColor]
// 刷新界面
(lldb) expression -- (void)[CATransaction flush]
  • 輸出返回值
(lldb) expression -- self.view
(UIView *) $1 = 0x00007fe322c18a10

expression --的別名(-- --表示不再接受命令選項)是對expression --的一層封裝讯私,分別為p、print西傀、call斤寇。

(lldb) p self.count
(CGFloat) $1 = 30
(lldb) print self.count
(CGFloat) $1 = 30
(lldb) call self.count
(CGFloat) $1 = 30
(lldb) expression -- self.count
po

在OC里所有的對象都是用指針表示的,所以一般用p拥褂、print娘锁、call、expression --打印的時候肿仑,打印出來的是對象的指針致盟,而不是對象本身。如果我們想打印對象尤慰。我們需要使用命令選項:-O馏锡。為了更方便的使用,lldb為expression -O --定義了一個別名:po

(lldb) p self
(SingletonViewController *) $3 = 0x00007fda32a8f9d0
(lldb) po self
<SingletonViewController: 0x7fda32a8f9d0>
breakpoint

1.breakpoint set 斷點設(shè)置伟端,用于斷點設(shè)置的方式有多種 分別如下:

  • 使用-n根據(jù)方法名設(shè)置斷點
    (lldb) breakpoint set -n viewWillAppear: 給所有類中的viewWillAppear:設(shè)置一個斷點
  • 使用-f指定文件
    (lldb) breakpoint set -f ViewController.m -n viewDidLoad
  • 使用-l指定文件某一行設(shè)置斷點
    (lldb) breakpoint set -f ViewController.m -l 38
  • 使用-c設(shè)置條件斷點
    text:方法接受一個ret的參數(shù)杯道,我們想讓ret == YES的時候程序中斷
    (lldb) breakpoint set -n text: -c ret == YES
  • 使用-o設(shè)置單次斷點
    如果剛剛那個斷點我們只想讓他中斷一次
    (lldb) breakpoint set -n text: -o

2.breakpoint delete刪除斷點

  • 刪除斷點ID為:1的斷點
    (lldb) breakpoint delete 1

  • 刪除工程中所有的斷點

(lldb) breakpoint delete 
About to delete all breakpoints, do you want to do that?: [Y/n] y
All breakpoints removed. (1 breakpoint)
  • 強制所有的斷點,忽略提示
(lldb) breakpoint delete -f
All breakpoints removed. (1 breakpoint)
watchpoint

如果說breakpoint是對方法生效的斷點责蝠,watchpoint就是對地址生效的斷點
在開發(fā)過程中党巾,平時我們簡稱一個屬性的變化通常是使用屬性的set方法,如果屬性沒有經(jīng)過set方法霜医,是直接通過self->屬性直接修改的話齿拂,用set方法就不行了,此時可以通過watchpoint命令監(jiān)聽屬性的內(nèi)存地址肴敛,一旦address的內(nèi)容被修改署海,程序就會自動斷開吗购。
1.watchpoint set設(shè)置觀測點

  • watchpoint set variable <變量參數(shù)> 為變量設(shè)置觀測點
    (lldb) watchpoint set variable self->_string
  • watchpoint set expression <變量地址參數(shù)> 為變量地址設(shè)置觀測點
(lldb) p &_model
(Modek **) $3 = 0x00007fe0dbf23280
(lldb) watchpoint set expression 0x00007fe0dbf23280
  • watchpoint command add為觀測點添加命令
    為ID為:1的觀測點添加一條 命令
    watchpoint command add -o 'po self' 1
    為ID為:1的觀測點添加多條命令
(lldb) watchpoint command add 1
Enter your debugger command(s). Type 'DONE' to end.
> po self
> continue
> DONE
  • watchpoint command list查詢觀測點命令列表
    (lldb) watchpoint command list 1查詢觀測點ID為:1的觀測點,命令列表
  • watchpoint command delete
    (lldb) watchpoint command delete 1刪除觀測點ID為:1的觀測點的命令列表
  • watchpoint list查詢工程中的所有觀測點列表
  • watchpoint delete
    刪除觀測點ID為:1的觀測點
    (lldb) watchpoint delete 1
    刪除工程中的觀測點
(lldb) watchpoint delete 
About to delete all watchpoints, do you want to do that?: [Y/n] y
All watchpoints removed. (2 watchpoints)
Extension

在調(diào)試器中輸入 e @import UIKit 可以打印出view的frame

(lldb) e @import UIKit
(lldb) po self.view.frame
(origin = (x = 0, y = 0), size = (width = 375, height = 667))
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末砸狞,一起剝皮案震驚了整個濱河市捻勉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刀森,老刑警劉巖踱启,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異研底,居然都是意外死亡埠偿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門飘哨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胚想,“玉大人,你說我怎么就攤上這事芽隆。” “怎么了统屈?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵胚吁,是天一觀的道長。 經(jīng)常有香客問我愁憔,道長腕扶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任吨掌,我火速辦了婚禮半抱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘膜宋。我一直安慰自己窿侈,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布秋茫。 她就那樣靜靜地躺著史简,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肛著。 梳的紋絲不亂的頭發(fā)上圆兵,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音枢贿,去河邊找鬼殉农。 笑死,一個胖子當著我的面吹牛局荚,可吹牛的內(nèi)容都是我干的超凳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼聪建!你這毒婦竟也來了钙畔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤金麸,失蹤者是張志新(化名)和其女友劉穎擎析,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挥下,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡揍魂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了棚瘟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片现斋。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖偎蘸,靈堂內(nèi)的尸體忽然破棺而出庄蹋,到底是詐尸還是另有隱情,我是刑警寧澤迷雪,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布限书,位于F島的核電站,受9級特大地震影響章咧,放射性物質(zhì)發(fā)生泄漏倦西。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一赁严、第九天 我趴在偏房一處隱蔽的房頂上張望扰柠。 院中可真熱鬧,春花似錦疼约、人聲如沸卤档。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽裆装。三九已至,卻和暖如春倡缠,著一層夾襖步出監(jiān)牢的瞬間哨免,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工昙沦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留琢唾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓盾饮,卻偏偏與公主長得像采桃,于是被迫代替她去往敵國和親懒熙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

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

  • ??LLDB的Xcode默認的調(diào)試器普办,它與LLVM編譯器一起工扎,帶給我們更豐富的流程控制和數(shù)據(jù)檢測的調(diào)試功能。平時用...
    Thinkdifferents閱讀 1,563評論 1 4
  • LLDB的Xcode默認的調(diào)試器衔蹲,它與LLVM編譯器一起肢娘,帶給我們更豐富的流程控制和數(shù)據(jù)檢測的調(diào)試功能。平時用Xc...
    小笨狼閱讀 20,480評論 31 187
  • [轉(zhuǎn)]淺談LLDB調(diào)試器文章來源于:http://www.cocoachina.com/ios/20150126/...
    loveobjc閱讀 2,513評論 2 6
  • 轉(zhuǎn)載 與調(diào)試器共舞 - LLDB 的華爾茲: https://objccn.io/issue-19-2/ 推薦:i...
    F麥子閱讀 3,333評論 0 10
  • 一舆驶、概述 LLDB全稱 [ Low Level Debugger ], 默認內(nèi)置于Xcode中的動態(tài)調(diào)試工具橱健。標準...
    Superman168閱讀 15,245評論 2 19