Chisel+LLDB 增強(qiáng)控制臺(tái)調(diào)試

相信大部分人都有使用過lldb命令進(jìn)行調(diào)試程序,如po一個(gè)對(duì)象,打印出該對(duì)象的屬性僵闯,lldb是一個(gè)有著REPL的特性的開源調(diào)試器卧抗,還可以支持C++,Python插件。本文要講的就是利用Facebook開源的外部插件(Chisel)增強(qiáng)lldb的調(diào)試鳖粟。

1.安裝Chisel

奉上Chisel源碼地址
首先Chisel的安裝要使用homebrew社裆,homebrew安裝可以看這里,本文不多敘述
打開終端向图,輸入一下命令
brew update
brew install chisel

Chisel安裝日志

安裝完成后還要安裝日志提示在``/.lldbinit`添加一行泳秀,如果沒有該文件也可以新建一個(gè),然后重啟Xcode,令Chisel生效

2.使用Chisel

  1. pvc命令榄攀,該命令可以遞歸打印viewcontroller的層級(jí)嗜傅,利用該命令我們可以清楚的看到viewcontroller的層級(jí)結(jié)構(gòu),還可以查看view的加載情況。

pvc
<IWTabBarController 0x7fa5f3db2580>, state: appeared, view: <UILayoutContainerView 0x7fa5f3d32c80> | <UINavigationController 0x7fa5f4869000>, state: appeared, view: <UILayoutContainerView 0x7fa5f3df9ec0> | | <IWHomeViewController 0x7fa5f3db4eb0>, state: appeared, view: <UITableView 0x7fa5f4052e00> | <UINavigationController 0x7fa5f409d000>, state: disappeared, view: <UILayoutContainerView 0x7fa5f3c70930> not in the window | | <IWMessageViewController 0x7fa5f3e72520>, state: disappeared, view: (view not loaded) | <UINavigationController 0x7fa5f4868a00>, state: disappeared, view: <UILayoutContainerView 0x7fa5f3ececb0> not in the window | | <IWDiscoverViewController 0x7fa5f3e94990>, state: disappeared, view: (view not loaded) | <UINavigationController 0x7fa5f488e000>, state: disappeared, view: <UILayoutContainerView 0x7fa5f3f144b0> not in the window | | <IWMeViewController 0x7fa5f3ed4650>, state: disappeared, view: (view not loaded)

3.pviews 命令遞歸查看view的層級(jí)結(jié)構(gòu),打印出每個(gè)view的frame航攒,是否接受點(diǎn)擊等磺陡,方便調(diào)試。
pviews self.view
<UIView: 0x7fbbdb4c8ac0; frame = (0 0; 414 736); autoresize = W+H; layer = <CALayer: 0x7fbbdb4c7b30>> | <_UILayoutGuide: 0x7fbbdb4c8e90; frame = (0 0; 0 0); hidden = YES; layer = <CALayer: 0x7fbbdb4c7730>> | <_UILayoutGuide: 0x7fbbdb4c99e0; frame = (0 0; 0 0); hidden = YES; layer = <CALayer: 0x7fbbdb4c7a20>> | <UIView: 0x7fbbdb4cbf90; frame = (100 100; 150 150); layer = <CALayer: 0x7fbbdb4cb600>> | | <UILabel: 0x7fbbdb4c80a0; frame = (0 0; 100 100); text = 'chisel'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7fbbdb4c8490>>
2.fvfvc 漠畜,這兩個(gè)命令都是用來(lái)查看當(dāng)前內(nèi)存中存在的實(shí)例對(duì)象币他,其中fv是對(duì)view進(jìn)行搜索,而fvc是對(duì)viewcontroller進(jìn)行搜索憔狞,二者都支持正則搜索
(lldb) fv cus 0x7fd5aa63deb0 IWCustomerCell 0x7fd5aa537240 IWCustomerCell 0x7fd5aa7959e0 IWCustomerCell 0x7fd5aa793460 IWCustomerCell 0x7fd5aa7915c0 IWCustomerCell 0x7fd5aa78daf0 IWCustomerCell (lldb) fvc home 0x7fd5aa4aa340 IWHomeViewController
5.showhide命令蝴悉,這兩個(gè)命令可以顯示或者隱藏某個(gè)viewOrLayer
6.caflush這個(gè)命令會(huì)重新繪制界面,當(dāng)你在調(diào)試界面顏色或者坐標(biāo)之類的時(shí)候可以直接在控制臺(tái)修改view的屬性瘾敢,然后caflush就可以看到效果了
(lldb) p self.tview (UIView *) $2 = 0x00007f8651564a60 (lldb) e (void)[$1 setBackgroundColor:[UIColor greenColor]] (lldb) caflush
7,bmessage該命令用于打斷點(diǎn)拍冠。在日常調(diào)試中,我們可能在[MyViewController viewWillAppear:]中添加斷點(diǎn)調(diào)試,但是如果該方法沒有實(shí)現(xiàn)簇抵,通常做法是子類中實(shí)現(xiàn)庆杜,然后打斷點(diǎn)。現(xiàn)在使用bmessage也可以試下調(diào)試功能(lldb) bmessage -[MyViewController viewWillAppear:],上面命令可以在其父類的viewWillAppear:中打斷點(diǎn)碟摆,
8晃财,visualize 一個(gè)有意思的命令,它可以讓你使用預(yù)覽打開一個(gè) UIImage, CGImageRef, UIView, 或 CALayer。定位到每個(gè)view的具體情況
(lldb) visualize imageView

3,Last but the most important

Reference article

Debug of Xcode: Fix Console po frame Printing
Dancing in the Debugger — A Waltz with LLDB
Chisel official description

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末典蜕,一起剝皮案震驚了整個(gè)濱河市断盛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌愉舔,老刑警劉巖钢猛,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異轩缤,居然都是意外死亡命迈,警方通過查閱死者的電腦和手機(jī)贩绕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)躺翻,“玉大人丧叽,你說我怎么就攤上這事卫玖」悖” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵假瞬,是天一觀的道長(zhǎng)陕靠。 經(jīng)常有香客問我,道長(zhǎng)脱茉,這世上最難降的妖魔是什么剪芥? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮琴许,結(jié)果婚禮上税肪,老公的妹妹穿的比我還像新娘。我一直安慰自己榜田,他們只是感情好益兄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著箭券,像睡著了一般净捅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辩块,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天蛔六,我揣著相機(jī)與錄音,去河邊找鬼废亭。 笑死国章,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的豆村。 我是一名探鬼主播液兽,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼你画!你這毒婦竟也來(lái)了抵碟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤坏匪,失蹤者是張志新(化名)和其女友劉穎拟逮,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體适滓,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡敦迄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罚屋。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡苦囱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出脾猛,到底是詐尸還是另有隱情撕彤,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布猛拴,位于F島的核電站羹铅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏愉昆。R本人自食惡果不足惜职员,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望跛溉。 院中可真熱鬧焊切,春花似錦、人聲如沸芳室。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)渤愁。三九已至牵祟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抖格,已是汗流浹背诺苹。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雹拄,地道東北人收奔。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像滓玖,于是被迫代替她去往敵國(guó)和親坪哄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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

  • iOS調(diào)試之chisel Chisel 是一個(gè) LLDB 指令集合势篡,用戶輔助 iOS 應(yīng)用差錯(cuò)翩肌。 安裝 chise...
    comst閱讀 4,623評(píng)論 0 13
  • [轉(zhuǎn)]淺談LLDB調(diào)試器文章來(lái)源于:http://www.cocoachina.com/ios/20150126/...
    loveobjc閱讀 2,511評(píng)論 2 6
  • LLDB的Xcode默認(rèn)的調(diào)試器,它與LLVM編譯器一起禁悠,帶給我們更豐富的流程控制和數(shù)據(jù)檢測(cè)的調(diào)試功能念祭。平時(shí)用Xc...
    CoderSC閱讀 1,361評(píng)論 0 2
  • 與調(diào)試器共舞 - LLDB 的華爾茲 nangege 2014/12/19 你是否曾經(jīng)苦惱于理解你的代碼,而去嘗試...
    McDan閱讀 881評(píng)論 0 0
  • 相信大家肯定都有過為了調(diào)試而添加打印變量碍侦,或者使用直接常量代替函數(shù)調(diào)用結(jié)果粱坤,或者更改判斷條件以進(jìn)入某特定分支的調(diào)試...
    縱橫而樂閱讀 1,960評(píng)論 0 3