Android Studio完美調(diào)試

? 這幾天寫了點(diǎn)基礎(chǔ)模塊,一口氣寫完,結(jié)果沒(méi)跑通(╯﹏╰),免不了調(diào)試一把,調(diào)來(lái)調(diào)去有些心煩,就順帶把AS里的調(diào)試都看了一遍。調(diào)試作為一個(gè)開(kāi)發(fā)者最基礎(chǔ)的技能,也是很重要的一個(gè)手段,正巧就講一講一些基礎(chǔ)的調(diào)試方法,具體要是感興趣,可以去官網(wǎng)看看。

? 調(diào)試很簡(jiǎn)單,直接在代碼的最右邊,點(diǎn)擊一下就會(huì)出現(xiàn)一個(gè)紅點(diǎn)

? 然后點(diǎn)擊菜單欄上的debug按鈕(有兩個(gè),第一個(gè)是debug app,使app重新啟動(dòng),然后進(jìn)入debug,第二個(gè)是attach debugger,可以直接連接到正在運(yùn)行的android process)

? 當(dāng)程序跑到相應(yīng)的斷點(diǎn),就會(huì)停在斷點(diǎn)處。什么step into,step over的我就不講了,這里講一個(gè)Evaluate Expression。

Evaluate Expression

? 在調(diào)試操作按鈕的邊上,一個(gè)像小計(jì)算機(jī)的圖標(biāo)(當(dāng)然也有快捷鍵!ctrl+U)。這個(gè)Evaluate Expression是個(gè)求值表達(dá)式,可以在斷點(diǎn)的時(shí)候,啟動(dòng)一個(gè)“計(jì)算器”,可以任意編輯表達(dá)式進(jìn)行計(jì)算。使用這個(gè)的最方便之處在于,當(dāng)斷點(diǎn)處無(wú)法提供一些你想要的信息的時(shí)候,可以自己編寫表達(dá)式,去查看結(jié)果。

分類

? 根據(jù)調(diào)試內(nèi)容的劃分,可以分為“字段調(diào)試”、“方法調(diào)試”、“異常調(diào)試”。

字段調(diào)試

字段調(diào)試

? 字段調(diào)試的紅點(diǎn)是有一杠的,在字段處斷點(diǎn),右鍵小紅點(diǎn),還可以設(shè)置其斷點(diǎn)屬性。

? 當(dāng)右鍵點(diǎn)擊后,可以選擇是訪問(wèn)的時(shí)候斷,或者是修改的時(shí)候斷,我們注意到,上面還有一個(gè)Condition,這個(gè)是做什么的呢。假設(shè),這個(gè)斷點(diǎn)是在一個(gè)循環(huán)當(dāng)中,且值一直在變化,你是不停地人工watch然后不停地人工next直到找到想要的value嗎?NONONO,這太累了,Condition就是用來(lái)增加條件篩選符合的value的,只有符合condition的語(yǔ)句,才會(huì)斷點(diǎn),這可以大大提升你的debug效率,是不是感覺(jué)輕松了很多。

方法調(diào)試

方法調(diào)試

? 方法調(diào)試的紅點(diǎn)是四個(gè)小點(diǎn),斷點(diǎn)后,可以斷到所有用到該方法的位置。這里介紹一下Debug面板

debug

? 最右邊是frames層,也就是整個(gè)breakpoint被斷的路徑,可以一層層的往上查看,中間的Variables是可以看到當(dāng)前場(chǎng)景里的變量值,watches是觀察器,可以選中某個(gè)變量,右鍵Add to Watches,可以一直觀測(cè)該變量的變化。

異常斷點(diǎn)

? 講異常斷點(diǎn)前,我們先來(lái)看一下view breakpoints

view breakpoints

? 菜單欄中找到run->View Breakpoints,會(huì)看到這么一個(gè)界面

? 在這個(gè)界面中,我們可以看到,在左側(cè)的幾行中,能看到不同的exception的斷點(diǎn),只要選中,程序就會(huì)在發(fā)生異常的時(shí)候,被斷住。其實(shí)這個(gè)不是重點(diǎn),我們先來(lái)講個(gè)情景。當(dāng)我們?cè)谡{(diào)試的時(shí)候,會(huì)想著打log,通過(guò)console看log的值來(lái)定位問(wèn)題,但是這個(gè)log你又不是一開(kāi)始就寫了,往往是斷點(diǎn)調(diào)著調(diào)著發(fā)現(xiàn),哎,我這里想看一下a這個(gè)值是多少,然后坑次坑次地寫上一句Log.i("a", a);關(guān)鍵是你還要編譯一遍,哇,這你要等多久啊,小項(xiàng)目還好,大項(xiàng)目動(dòng)不動(dòng)就5-6分鐘,完了你還不一定會(huì)記得這里有個(gè)test的 log,忘了刪了。然后我就要請(qǐng)出我們的主角,evaluate and log。

? 我們把suspend這個(gè)勾給去掉,他是用來(lái)決定是否斷停的,如果勾去掉,debug還在,但是不會(huì)在這個(gè)地方斷住,然后勾住log message to console和evaluate and log,在編輯框里寫上你要的Log語(yǔ)句,就可以在logcat里看到相對(duì)應(yīng)的log了,而且并沒(méi)有改動(dòng)源代碼,也不會(huì)生成多余的代碼,是不是感覺(jué)很方便。

總結(jié)

? 好了,調(diào)試的基本用法,大致就以上幾種。相信學(xué)會(huì)這些方法后,一定可以提升我們平時(shí)Coding調(diào)試的效率,更快的解決問(wèn)題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android Studio目前已經(jīng)成為開(kāi)發(fā)Android的主要工具,用熟了可謂相當(dāng)順手。作為開(kāi)發(fā)者,調(diào)試并發(fā)現(xiàn)b...
    7d3fadbb4407閱讀 620評(píng)論 0 3
  • Android Studio目前已經(jīng)成為開(kāi)發(fā)Android的主要工具,用熟了可謂相當(dāng)順手。作為開(kāi)發(fā)者,調(diào)試并發(fā)現(xiàn)b...
    涅槃1992閱讀 51,111評(píng)論 36 366
  • Android Studio目前已經(jīng)成為開(kāi)發(fā)Android的主要工具,用熟了可謂相當(dāng)順手。作為開(kāi)發(fā)者,調(diào)試并發(fā)現(xiàn)b...
    StChris閱讀 1,848評(píng)論 0 16
  • 對(duì)于開(kāi)發(fā)的同學(xué)來(lái)講,Debug并不陌生,對(duì)于做Android開(kāi)發(fā)的同學(xué)也是一樣的。 可能有些同學(xué)會(huì)問(wèn),調(diào)試程序誰(shuí)不...
    點(diǎn)融黑幫閱讀 5,604評(píng)論 3 6
  • 什么是尋租? 為什么每個(gè)國(guó)家里面的人都很忙,但有些國(guó)家很富裕,有些國(guó)家很窮? 薛老師的課程一個(gè)很明顯的特征就是蘇格...
    AmberShao閱讀 565評(píng)論 0 0

友情鏈接更多精彩內(nèi)容