iOS LLDB調(diào)試

LLDB是XCode內(nèi)置調(diào)試工具


1.png

我們加了斷點瓤的,然后在運行到斷點處就停了下來吞歼,接下來我們看到lldb這里了嗎篙骡?我們可以通過lldb所提供的命令來操作。

常用p、po老虫、call命令

從官方的描述來看祈匙,p夺欲、print些阅、call是一樣的市埋,但是po就不太一樣了,輸入一樣但是輸出不一樣抒倚。po的輸出的是具體對象的內(nèi)容托呕。

lldb聲明變量

我們可以使用e命令定義變量项郊,然后在調(diào)試中使用呆抑∪蛋看如下的例子:

(lldb) e NSString *$str = @"http://www.huangyibiao.com"
(lldb) po $str
http://www.huangyibiao.com
 
(lldb) e int $count = 10
(lldb) p $count
(int) $count = 10
(lldb) e NSArray *itemArray = @[@"Test", @"Demo", @"huangyibiao"]
(lldb) po $count
10
 

我們使用e聲明了$str變量,然后下面就可以使用了公罕。我們看到通過p命令打印出來的都是$開頭的變量了嗎楼眷?我們在聲明和使用時也需要加上$符號熊尉,與PHP一樣狰住!

在調(diào)試時催植,有時候想臨時計算一下某個值來比較時,就可以通過這種方式來實現(xiàn)了创南,再也不用到源代碼處添加上聲明實現(xiàn)然后添加一句打印了伦忠,是否便利了很多?

調(diào)用變量的API

當(dāng)我們在斷點處稿辙,定義了blogName變量了昆码,因此我們可以通過調(diào)試命令來調(diào)用

(lldb) po [blogName uppercaseString]
標(biāo)哥的技術(shù)博客
 
(lldb) po [blogName substringFromIndex:2]
的技術(shù)博客
強轉(zhuǎn)返回值類型

當(dāng)我們調(diào)用API返回值類型不指定時,有時候所打印出來的東西是我們看不懂的邻储,比如下面的獲取結(jié)果應(yīng)該是“標(biāo)”字未桥,但是不同類型打印結(jié)果卻不一樣:

(lldb) po [blogName characterAtIndex:0]
26631
 
(lldb) po (unsigned int)[blogName characterAtIndex:0]
26631
 
(lldb) po (char)[blogName characterAtIndex:0]
'\a'
 
(lldb) po (NSString *)[blogName characterAtIndex:0]
0x0000000000006807
 
(lldb) po (unichar)[blogName characterAtIndex:0]
U+6807 u'標(biāo)'
設(shè)置斷點觸發(fā)條件

看下圖,筆者是怎么設(shè)置觸發(fā)條件的:

2.png

我們在NSLog這一行芥备,設(shè)置了條件冬耿,只有當(dāng)條件滿中時,才會進入斷點萌壳,不過這里并沒有讓它進入斷點,而條件滿足時就發(fā)出聲音并打印提示語爱咬。

這種應(yīng)用場景主要是在循環(huán)遍歷數(shù)據(jù)時,想要斷點跟蹤就只能通過這種方式了,除非添加NSLog打印师枣,但是這種需要手動添加代碼,在調(diào)試時才想到要添加一些打印語句,這時候又得重新運行兴革,這太慢了箕昭。如果懂得如何設(shè)置斷點條件泌霍,那么就能滿足我們的需求了积暖,直接可以設(shè)置條件缅疟。

常用打印視圖層次結(jié)構(gòu)

當(dāng)我們想要知道某個視圖的結(jié)構(gòu)時耘斩,可以通過調(diào)用recursiveDescription方法來打印出來岩饼,那么其結(jié)構(gòu)就一目了然了:

(lldb) po [self.view recursiveDescription]
<UIView: 0x7fdd1052af10; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x7fdd1052b290>>
   | <UIButton: 0x7fdd10529070; frame = (66 183; 188 40); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x7fdd1051bff0>>
   |    | <UIButtonLabel: 0x7fdd104162f0; frame = (41.5 11; 105 18); text = '標(biāo)哥的技術(shù)博客'; alpha = 0.2; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7fdd10412590>>
   |    |    | <_UILabelContentLayer: 0x7fdd12804f30> (layer)
   | <_UILayoutGuide: 0x7fdd1052b300; frame = (0 0; 0 20); hidden = YES; layer = <CALayer: 0x7fdd1052b710>>
   | <_UILayoutGuide: 0x7fdd1052c070; frame = (0 568; 0 0); hidden = YES; layer = <CALayer: 0x7fdd1052c200>>
臨時刷新界面UI

最開始按鈕的背景顏色是blueColor硕糊,現(xiàn)在我們要在調(diào)試過程中修改其背景色為紅色,并刷新界面恢恼。執(zhí)行下面的命令行,App界面的按鈕背景顏色是:

(lldb) e ((UIButton *)sender).backgroundColor = [UIColor redColor]
(UICachedDeviceRGBColor *) $41 = 0x00007fdd10715b00
(lldb) e (void)[CATransaction flush]
修改變量值

本小節(jié)通過使用expr在調(diào)試過程中修改變量的值,感謝我的大徒弟在看完之后根據(jù)自己的經(jīng)驗總結(jié)出這一條技巧青责,現(xiàn)在也分享出來給大家~

使用很簡單暇检,就是這樣的規(guī)則:

expr variable = newValue

可以輸入help查看酿矢!

感謝作者在標(biāo)哥的技術(shù)博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市之众,隨后出現(xiàn)的幾起案子膘婶,更是在濱河造成了極大的恐慌,老刑警劉巖脊岳,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異参淹,居然都是意外死亡,警方通過查閱死者的電腦和手機规求,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門丛塌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事彤敛。” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長聘萨。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么腹侣? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任乒省,我火速辦了婚禮唇礁,結(jié)果婚禮上琢融,老公的妹妹穿的比我還像新娘她混。我一直安慰自己酗钞,他們只是感情好着裹,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般凿歼。 火紅的嫁衣襯著肌膚如雪心俗。 梳的紋絲不亂的頭發(fā)上疟位,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機與錄音里覆,去河邊找鬼喧枷。 笑死忧便,一個胖子當(dāng)著我的面吹牛脆荷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼退子,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了惜犀?” 一聲冷哼從身側(cè)響起礁叔,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤碰缔,失蹤者是張志新(化名)和其女友劉穎账劲,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡瀑焦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年腌且,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榛瓮。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡铺董,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出禀晓,到底是詐尸還是另有隱情精续,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布粹懒,位于F島的核電站重付,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏凫乖。R本人自食惡果不足惜确垫,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望帽芽。 院中可真熱鬧删掀,春花似錦、人聲如沸导街。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽菊匿。三九已至付呕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間跌捆,已是汗流浹背徽职。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留佩厚,地道東北人姆钉。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像抄瓦,于是被迫代替她去往敵國和親潮瓶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

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