本來一直想給大家普及一下lldb的使用处硬,因?yàn)樯磉呌泻芏嗯笥央m然開發(fā)了很久小槐,但是還是不會(huì)使用調(diào)試器,還傻傻的打一個(gè)log,重啟程序再看這個(gè)值荷辕。說凿跳,是不是你,中招沒疮方。這一篇也是為了幫這些朋友認(rèn)識一下調(diào)試器的強(qiáng)大控嗜。整篇介紹的例子都是基于我的貼圖demo的。
1.首先介紹下如何避免重啟程序打一個(gè)log
如圖下:
lldbLog
lldbLog
1.首先注釋以前那該死的log背景被點(diǎn)擊了骡显,然后我加一個(gè)優(yōu)美的斷點(diǎn)疆栏。
2.然后右鍵點(diǎn)擊斷點(diǎn)編輯斷點(diǎn),首先選擇Action,logMessage惫谤,再點(diǎn)擊+,選擇DebugerCommander壁顶,然后這里面的命令和右下角的lldb命令是完全一樣的,這個(gè)命令你隨意打溜歪。
3.最重要的一步若专,一點(diǎn)要選擇automaticlly continue after evalating value,這個(gè)可以使得程序不會(huì)中斷繼續(xù)執(zhí)行蝴猪。
好吧调衰,大家以后就可以告別這個(gè)該死的log,以后大家的consle就不出現(xiàn)那些亂七八糟的log,而且還找不到了.我現(xiàn)在就是每次看到項(xiàng)目里一堆log就特別煩……(ps:這個(gè)……是shift+6打出來的哦),所以只要你想在輸出某一個(gè)值或者一句話看一個(gè)函數(shù),是否調(diào)用自阱,完全不需要多余的重新運(yùn)行一次程序嚎莉。
2基本的lldb命令的介紹
大家一般知道的lldb命令一般是p,和po,其實(shí)我研究了一陣子最實(shí)用的也就這兩個(gè)lldb命令,但是大家一般都不知道用在什么場合动壤。
p命令的介紹萝喘,首先p是打印非對象的值,它是 e --的縮寫琼懊。如果使用它打印對象的話阁簸,那么它會(huì)打印出對象的地址,如果打印非對象它一般會(huì)打印出基本變量類型的值哼丈。當(dāng)然用它也可以申明一個(gè)變量譬如 p int $a = 10; (注lldb使用$在變量前來聲明為lldb內(nèi)的命名空間的)
po 命令启妹,po 命令是我們最常用的命令因?yàn)樵趇os開發(fā)中,我們時(shí)刻面臨著對象(ps:但是我沒有對象醉旦,歡迎介紹)饶米,所以我們在絕大部分時(shí)候都會(huì)使用po桨啃。首先po這個(gè)命令會(huì)打印出對象的description描述。
好吧檬输,macDown語法還是沒有完全搞明白照瘾,所以篇幅不是太好看(這個(gè)完全沒想這么早出這篇博客)
下面還是使用一副圖片來描述具體的過程吧。
po的使用
po的使用
1.首先我在背景蒙層下了個(gè)斷點(diǎn)丧慈,程序中斷之后析命,我首先通過po 命令打出了【po self.view】然后打出了當(dāng)前的self.view的描述。
2.然后我通過self.view的description描述逃默,然后找到手勢NSArry的地址我打印出了當(dāng)前view上面有那些手勢鹃愤。
然后找到當(dāng)前pinch的手勢,然后通過p 命令完域,將其強(qiáng)轉(zhuǎn)成UIPinchGesture,因?yàn)閘ldb有時(shí)無法確定其具體的類型软吐,需要強(qiáng)轉(zhuǎn),但是這個(gè)強(qiáng)轉(zhuǎn)不是必須的吟税,需要你們自己根據(jù)情況來決定凹耙。
當(dāng)我們使用p 命令打印一個(gè)對象時(shí),lldb內(nèi)部會(huì)默認(rèn)使用一個(gè)$加數(shù)字來記錄這個(gè)對象乌妙。
這個(gè)$會(huì)一直存在使兔,當(dāng)這個(gè)對象還沒銷毀的時(shí)候,所以我們隨時(shí)可以通過這個(gè)變量來打印以前的值藤韵。我是通過【$61 view】找出pinch 作用的view.我們也可以使用p 命令得到一個(gè)這個(gè)view在lldb的記錄虐沥。
注意在使用lldb內(nèi)部的變量$來記錄變量的時(shí)候,絕大部分的時(shí)候都沒有語法提示泽艘,所以你需要自己能準(zhǔn)確的打印出方法的名字欲险。我這里一般,都是在當(dāng)前編輯器中去打好方法匹涮,然后再拷貝到lldb處天试。
在使用lldb命令的時(shí)候,并非所有的命令都很常用然低,你可以通過在lldb中 打印 help 查看所有的lldb命令喜每,譬如breakpoint命令,這種命令完全可以通過Xcode UI界面加斷點(diǎn)雳攘,當(dāng)然所有的xcode ui 界面加斷點(diǎn)本質(zhì)也是通過lldb的命令的带兜,這個(gè)一般用戶都不會(huì)太常用。
help命令
help命令
今天就先介紹到這里吨灭,下一篇博客我會(huì)介紹給大家如何使用開源的facebook的chisel,從安裝到以及在什么場景下使用什么命令刚照,和常用的chisel命令有哪些。因?yàn)檫@個(gè)MarkDown還沒弄太熟悉喧兄,所以重頭戲在下一章无畔。(ps:主要是markDown還沒用熟啊楚,我自己看著都不爽,所以下次會(huì)帶來更好的版本浑彰,和更詳細(xì)的介紹)