Android Studio中debug功能詳解
本文為大家分享了Android Studio debug功能的具體使用方法,供大家參考,具體內(nèi)容如下
運(yùn)行debug模式
1. 進(jìn)入debug
- 點(diǎn)擊圖中紅色圓圈圈起的左邊綠色按鈕,運(yùn)行app的debug模式,快捷鍵Shift+F9
- 點(diǎn)擊圖中紅色圓圈圈起的右邊按鈕,可以選擇正在運(yùn)行的進(jìn)程attach debugger
1. 打斷點(diǎn):鼠標(biāo)點(diǎn)擊編輯框左側(cè),出現(xiàn)紅色圓點(diǎn)
斷點(diǎn)分類(lèi)
這張圖可以看出斷點(diǎn)也有行斷點(diǎn)、方法斷點(diǎn)、字段斷點(diǎn)、異常斷點(diǎn)。其實(shí)打斷點(diǎn)仔細(xì)觀察也可以發(fā)現(xiàn)它們的標(biāo)識(shí)圖片是不同的,就是上圖中每行前面的那四種不同的小紅點(diǎn)。
行斷點(diǎn): 當(dāng)執(zhí)行到此行是停止執(zhí)行,等待調(diào)試。
屬性斷點(diǎn):打在類(lèi)的成員變量上,當(dāng)變量初始化或變量的值改變時(shí)觸發(fā)斷點(diǎn)。當(dāng)然也可以配合其他用法設(shè)置過(guò)濾。
方法斷點(diǎn):打在一個(gè)函數(shù)的首行,進(jìn)行函數(shù)級(jí)別的調(diào)試,更可以打在JDK的源碼里,查看函數(shù)調(diào)用。普通的斷點(diǎn)是不能打在源碼里的。
異常斷點(diǎn):當(dāng)拋出指定異常時(shí)觸發(fā)斷點(diǎn)。AS可以在Breakpoints中點(diǎn)擊左上角 + 號(hào),選擇Java Exception Breakpoints,來(lái)指定一個(gè)異常。
基本操作
從左到右依次
- 跳到當(dāng)前執(zhí)行的斷點(diǎn)處
- Step Over 單步執(zhí)行
- Step Into 進(jìn)入正在執(zhí)行的方法(必須是自定義的方法)、
- Focus Step Into 可以進(jìn)入源碼
- Step Out 跳出正在執(zhí)行的方法
- Drop Frame 返回到當(dāng)前方法的調(diào)用處
- Run to Cursor 運(yùn)行到光標(biāo)處
- Evaluate expression 計(jì)算選中的變量的值
從上到下依次為:
- 切換debugger模式
- 運(yùn)行至下一斷點(diǎn),(從暫停)恢復(fù)程序
- 暫停程序
- 關(guān)閉調(diào)試
- 查看斷點(diǎn)
- 隱藏?cái)帱c(diǎn)
- 查看線程堆棧
高級(jí)操作和斷點(diǎn)過(guò)濾
點(diǎn)擊上一張圖中的5查看斷點(diǎn)可以打開(kāi)下面的面板,這張面板提供了關(guān)于debug的許多高級(jí)功能:
條件過(guò)濾
右擊斷點(diǎn),可以設(shè)置condition。如圖所示,設(shè)置一個(gè)變量mJoinVaule.equals(“222”),點(diǎn)擊Done。當(dāng)在mJoinEt這個(gè)EditText中輸入222時(shí)才會(huì)觸發(fā)這個(gè)斷點(diǎn)。
在BreakPoints面板同樣可以設(shè)置條件斷點(diǎn)。
測(cè)試代碼
下面是一段測(cè)試代碼,用來(lái)測(cè)試后面的功能
package com.jnxy.arithmetic.base; /** * Created by admin on 2016/8/5. */ public class Person { int age; public void out() { System.out.println("age : " + age); } public Person(int age) { this.age = age; } public static void main(String [] args) { Person p1 = new Person(3); Person p2 = new Person(5); Person p3 = new Person(8); Man man = new Man(10, 10); Woman woman = new Woman(12, 12); Person[] persons = new Person[]{p1, p2, p3, man, woman}; for (Person person : persons) { person.out(); } } } class Man extends Person { int weight; public Man(int age, int weight) { super(age); this.weight = weight; } } class Woman extends Person{ int height; public Woman(int age, int height) { super(age); this.height = height; } }
日志斷點(diǎn)
斷點(diǎn)打在上方代碼第27行,選中代碼,同時(shí)設(shè)置Condition和Log evaluation expression,這樣只有person.age==8時(shí)斷點(diǎn)生效,才會(huì)在log打印表達(dá)式。當(dāng)然,也可以值設(shè)置Log表達(dá)式??刂破鬏敵鋈缦聢D,可以看到只有age==8時(shí)才打印了toString().
實(shí)例過(guò)濾
打好斷點(diǎn),并設(shè)置觸發(fā)斷點(diǎn)的實(shí)例
繼續(xù)執(zhí)行程序,當(dāng)設(shè)置的實(shí)例調(diào)用方法時(shí)斷點(diǎn)生效。
類(lèi)過(guò)濾
首先設(shè)置Class Filter,內(nèi)容為要過(guò)濾類(lèi)的完整路徑,設(shè)置為只有Man類(lèi)調(diào)用方法斷點(diǎn)生效,下圖age==10,證明確實(shí)是Man類(lèi)調(diào)用的方法。
執(zhí)行次數(shù)斷點(diǎn)
Pass Count和Condition具有相似之處,但Condition用途應(yīng)該更廣泛一些。
設(shè)置變量值
調(diào)試過(guò)程中,選中一個(gè)變量右鍵可以可以進(jìn)行Set Value操作,這項(xiàng)強(qiáng)大的功能對(duì)需要不同數(shù)據(jù)進(jìn)行判斷的情況提供了極大地便利。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- android studio實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器(無(wú)bug)
- Android Studio debug.keystore位置介紹
- Android Studio 3.5格式化布局代碼時(shí)錯(cuò)位、錯(cuò)亂bug的解決
- 解決android設(shè)備斷電重啟后WIFI不能自動(dòng)重連的BUG(收藏)
- 關(guān)于ADB的Android Debug Bridge(安卓調(diào)試橋)那些事
- Android同時(shí)安裝Release和Debug版本的方法
- Android Studio 自定義Debug變量視圖的方法
- Android Studio之Debug運(yùn)行期代碼植入的方法
- Android實(shí)現(xiàn)錄音方法(仿微信語(yǔ)音、麥克風(fēng)錄音、發(fā)送語(yǔ)音、解決5.0以上BUG)
- 淺談Android Studio如何Debug對(duì)應(yīng)so文件C/C++代碼
- Android Studio 報(bào)錯(cuò)“app:processDebugResources"解決方法
- Android 判斷是開(kāi)發(fā)debug模式,還是發(fā)布release模式的方法
- Android 開(kāi)發(fā) 使用WebUploader解決安卓微信瀏覽器上傳圖片中遇到的bug
- Android 常見(jiàn)bug匯總及解決方案
相關(guān)文章
Android中將View的內(nèi)容保存為圖像的簡(jiǎn)單實(shí)例
這篇文章主要介紹了Android中將View的內(nèi)容保存為圖像的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下2014-01-01Android CoordinatorLayout高級(jí)用法之自定義Behavior
這篇文章主要介紹了Android CoordinatorLayout高級(jí)用法之自定義Behavior,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02Android實(shí)現(xiàn)可收縮和擴(kuò)展的TextView
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)可收縮和擴(kuò)展的TextView,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Android自定義View系列之Path繪制仿支付寶支付成功動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了Android自定義View系列之Path繪制仿支付寶支付成功動(dòng)畫(huà),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12Android提醒微技巧你真的了解Dialog、Toast和Snackbar嗎
這篇文章主要介紹了Android提醒微技巧你真的了解Dialog、Toast和Snackbar嗎的相關(guān)資料,需要的朋友可以參考下2016-07-07Android數(shù)據(jù)持久化之SQLite數(shù)據(jù)庫(kù)用法分析
這篇文章主要介紹了Android數(shù)據(jù)持久化之SQLite數(shù)據(jù)庫(kù)用法,結(jié)合實(shí)例形式分析了SQLite概念、功能、相關(guān)操作類(lèi)與使用技巧,需要的朋友可以參考下2017-05-05Android編程調(diào)節(jié)屏幕亮度(背景燈)及保持背景燈常亮的方法
這篇文章主要介紹了Android編程調(diào)節(jié)屏幕亮度(背景燈)及保持背景燈常亮的方法,涉及Android屏幕相關(guān)屬性涉及技巧,需要的朋友可以參考下2016-01-01Android?ContentObserver?監(jiān)聽(tīng)短信思路詳解
ContentObserver允許在Android中監(jiān)控特定數(shù)據(jù)的變化,可用于短信等應(yīng)用的數(shù)據(jù)監(jiān)聽(tīng),開(kāi)發(fā)者可通過(guò)繼承ContentObserver并實(shí)現(xiàn)onChange方法來(lái)定義當(dāng)目標(biāo)內(nèi)容變化時(shí)的響應(yīng)行為,感興趣的朋友一起看看吧2024-09-09Android編程之殺毒的實(shí)現(xiàn)原理及具體實(shí)例
這篇文章主要介紹了Android編程之殺毒的實(shí)現(xiàn)原理及具體實(shí)例,結(jié)合實(shí)例形式分析了Android殺毒功能的原理與簡(jiǎn)單實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-12-12Android Material Design 陰影實(shí)現(xiàn)示例
這篇文章主要介紹了Android Material Design 陰影實(shí)現(xiàn)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04