android adb 調(diào)試技巧

參考鏈接

debug 技巧

關(guān)于android studio的debug技巧雹仿,前面的兩篇參考文章已經(jīng)寫的特別好了墓懂,也沒必要再寫一次了仆邓,主要就記錄一下debug的關(guān)鍵概念和快捷鍵红选。至于如何debug肴捉,就請參考前面兩篇文章。

工具欄介紹

too.png
名稱 作用 備注 快捷鍵
show Execution Point 定位到當(dāng)前正在調(diào)試的位置 無備注 alt+F10
step over 單步跳過 一步一步執(zhí)行搬瑰,遇到方法會直接執(zhí)行方法臣咖,然后進(jìn)入下一步,不會進(jìn)入方法內(nèi)容 F8
step into 單步跳入 單步向下執(zhí)行谱醇,如果當(dāng)前是自定義方法暇仲,hi進(jìn)入方法內(nèi)部,系統(tǒng)方法則不進(jìn)入方法內(nèi)部 F7
Force step into 強制單步跳入 與單步跳入不同的是副渴,不管什么方法他都會進(jìn)入 Alt + Shfit + F7
step out 單步跳出 與單步跳入相對奈附,表示從方法體中跳出,回到進(jìn)入方法的位置煮剧,以繼續(xù)斷點 shfit + F8
run to cursor 執(zhí)行到光標(biāo)處 直接從當(dāng)前位置運行到光標(biāo)處斥滤,但是能被中間的斷點攔截。 alt + F9
Evalyate Exoression 計算表達(dá)式 支持在點點過程中勉盅,通過直接賦值或者表達(dá)式方式佑颇,修改任意表倆個的值。 alt+F8

上圖從左往右看草娜,名稱和作用如下表所示挑胸。

名稱 作用 備注 快捷鍵
show Execution Point 定位到當(dāng)前正在調(diào)試的位置 無備注 alt+F10
step over 單步跳過 一步一步執(zhí)行,遇到方法會直接執(zhí)行方法宰闰,然后進(jìn)入下一步茬贵,不會進(jìn)入方法內(nèi)容 F8
step into 單步跳入 單步向下執(zhí)行,如果當(dāng)前是自定義方法议蟆,hi進(jìn)入方法內(nèi)部闷沥,系統(tǒng)方法則不進(jìn)入方法內(nèi)部 F7
Force step into 強制單步跳入 與單步跳入不同的是,不管什么方法他都會進(jìn)入 Alt + Shfit + F7
step out 單步跳出 與單步跳入相對咐容,表示從方法體中跳出舆逃,回到進(jìn)入方法的位置,以繼續(xù)斷點 shfit + F8
run to cursor 執(zhí)行到光標(biāo)處 直接從當(dāng)前位置運行到光標(biāo)處,但是能被中間的斷點攔截路狮。 alt + F9
Evalyate Exoression 計算表達(dá)式 支持在點點過程中虫啥,通過直接賦值或者表達(dá)式方式,修改任意表倆個的值奄妨。 alt+F8
快捷鍵 功能 說明
右擊斷點 為斷點設(shè)置執(zhí)行條件涂籽,或打印信息 只能針對本斷點生效
alt + 單擊 查看斷點時變量的值
ctrl+alt+F8 為斷點添加執(zhí)行條件,或打印信息 這個可以對所有的斷點生效

再加來幾個快捷鍵砸抛。

快捷鍵 功能 說明
右擊斷點 為斷點設(shè)置執(zhí)行條件评雌,或打印信息 只能針對本斷點生效
alt + 單擊 查看斷點時變量的值
ctrl+alt+F8 為斷點添加執(zhí)行條件,或打印信息 這個可以對所有的斷點生效

工具篇

uiautorviewer

可以通過這個工具快速定位到UI控件的ID直焙,并通過ID快速找到相應(yīng)的邏輯景东。

DDMS

可以利用ddms這個工具,實現(xiàn)截屏奔誓,查看線程和堆信息斤吐,日志信息,進(jìn)程厨喂,廣播狀態(tài)信息和措,模擬來電,呼叫和短信等功能蜕煌。
具體使用方法參考這里https://developer.android.com/studio/profile/monitor.html

命令篇

adb shell am

命令 作用 備注 示例
am start -n <package name>/<ativity name> 啟動acivity -n 表示以組件式啟動派阱,還可以 am start -a android.settings.INPUT_METHOD_SETTINGS//使用Action方式打開系統(tǒng)設(shè)置-輸入法設(shè)置
am start -a -n --es extra "hello" --ei pid 10 <package name>/<ativity name> 待參數(shù)的啟動activity --es 表示帶string,--ei 表示整型數(shù)據(jù),都是以鍵值對的形式 am start -a -n --es extra "hello" --ei pid 10 com.reoger.app/com.example.cm.myapplication.NextActivity
am broadcast -a <action> 啟動廣播 還可以通過--user指定用戶發(fā)送廣播 com.android.broadcast.test
am broadcast -a <action> --es <key> <value> 帶信息的發(fā)送廣播 --es表示字符串幌绍,還有--ez(布爾值)等多種類型數(shù)據(jù)颁褂,都是以鍵值對的形式 am broadcast -a com.android.broadcast.test --es adb_extra "hello"
am startservice <package name>/<service name> 啟動服務(wù) 可以通過--user<USER_ID>指定啟動的用戶 am startservice com.reoger.app/com.example.cm.myapplication.MyService
am force-stop <package name> 關(guān)閉指定包名的應(yīng)用程序 am force-stop com.reoger.app
am kill <package name> 殺死與應(yīng)該程序包想關(guān)聯(lián)的所有進(jìn)程,但只會殺死安全進(jìn)程 可以通過--user <USER_ID>指定用戶 am kill com.reoger.app
am kill -all 殺死全部的后臺進(jìn)程 am kill -all

am 就是activity manager的簡稱傀广,可以用于啟動activity颁独、打開或關(guān)閉進(jìn)程、發(fā)送廣播等操作伪冰。
關(guān)于具體的命令誓酒,可以參考這里http://blog.csdn.net/soslinken/article/details/50245865.
然后,這里就記錄常用的adb shell am命令贮聂。
[注:這里默認(rèn)省略了adb shell]

命令 作用 備注 示例
am start -n <package name>/<ativity name> 啟動acivity -n 表示以組件式啟動靠柑,還可以 am start -a android.settings.INPUT_METHOD_SETTINGS//使用Action方式打開系統(tǒng)設(shè)置-輸入法設(shè)置
am start -a -n --es extra "hello" --ei pid 10 <package name>/<ativity name> 待參數(shù)的啟動activity --es 表示帶string,--ei 表示整型數(shù)據(jù),都是以鍵值對的形式 am start -a -n --es extra "hello" --ei pid 10 com.reoger.app/com.example.cm.myapplication.NextActivity
am broadcast -a <action> 啟動廣播 還可以通過--user指定用戶發(fā)送廣播 com.android.broadcast.test
am broadcast -a <action> --es <key> <value> 帶信息的發(fā)送廣播 --es表示字符串吓懈,還有--ez(布爾值)等多種類型數(shù)據(jù)歼冰,都是以鍵值對的形式 am broadcast -a com.android.broadcast.test --es adb_extra "hello"
am startservice <package name>/<service name> 啟動服務(wù) 可以通過--user<USER_ID>指定啟動的用戶 am startservice com.reoger.app/com.example.cm.myapplication.MyService
am force-stop <package name> 關(guān)閉指定包名的應(yīng)用程序 am force-stop com.reoger.app
am kill <package name> 殺死與應(yīng)該程序包想關(guān)聯(lián)的所有進(jìn)程,但只會殺死安全進(jìn)程 可以通過--user <USER_ID>指定用戶 am kill com.reoger.app
am kill -all 殺死全部的后臺進(jìn)程 am kill -all

詳情參考這里:http://blog.csdn.net/soslinken/article/details/50245865

adb shell pm

pm即是 package manager的簡稱耻警,可以用于安裝應(yīng)用隔嫡、查詢應(yīng)用信息甸怕、系統(tǒng)權(quán)限、控制應(yīng)用腮恩。

命令 作用 備注 示例
pm list packages [options] [fileter] 打印所有已經(jīng)安裝的應(yīng)用的包名 options 常用的有-3 表示只顯示第三方應(yīng)用的包名梢杭,filter表示按名字篩選 pm list packages -e 顯示可用的應(yīng)用和包名
pm list permission [options] [group] 打印權(quán)限 -g表示按組列出,-s表示簡短打印 pm list permission-groups 打印所有已知的權(quán)限組
grant <package_name> <permission> 授予應(yīng)用權(quán)限 必須android 6.0及以上的設(shè)備 grant com.reoger.app android.permission.WRITE_EXTERNAL_STORAGE
revoke <package_name> <permission> 撤銷應(yīng)用權(quán)限 必須android 6.0及以上的設(shè)備 revoke com.reoger.app android.permission.WRITE_EXTERNAL_STORAGE
pm clear <package name> 清除應(yīng)用數(shù)據(jù) pm clear com.reoger.app
pm enable <package or component> 使得packaege或componet可用 只針對第系統(tǒng)應(yīng)用 pm enable com.reoger.app
pm hide <package or component> 隱藏package或componet 被隱藏應(yīng)用在管理中變得不可見秸滴,桌面圖標(biāo)也會消失 pm hide com.reoger.app
pm unhide <package or component> 取消隱藏package或componet 桌面圖標(biāo)需要重新添加 pm unhide com.reoger.app

詳情請參考這里:https://www.cnblogs.com/JianXu/p/5380882.html

adb shell dumysys

命令 作用
dumpsys cpuinfo 查看CPU信息
dumpsys activity 查看一大堆信息武契,包括activity、broadcasts荡含、providers咒唆、permissions等等信息
dumpsys activity top 獲取當(dāng)前android系統(tǒng)中與用戶交互的activity的詳細(xì)信息
dumpsys activity activities 顯示當(dāng)前所有運行的任務(wù)棧,可以與管道- grep XXX結(jié)合使用,用于篩選我們需要的任務(wù)棧
dumpsys activity meminfo <package name> 顯示應(yīng)用內(nèi)存使用的情況
dumpsys activity package <package name> 顯示apk的信息
option 含義
-a 包括所有可用server狀態(tài)
-c 包括client狀態(tài)内颗,即app端情況
-p package 限定輸出指定包名

其中的dumpsys activity [options] [WHAT]參數(shù)可選如下:

option 含義
-a 包括所有可用server狀態(tài)
-c 包括client狀態(tài)钧排,即app端情況
-p package 限定輸出指定包名
WHAT 解釋 對應(yīng)源碼
a[ctivities] activity狀態(tài) dumpActivitiesLocked()
b[roadcasts] [PACKAGE_NAME] broadcast狀態(tài) dumpBroadcastsLocked()
s[ervices] [COMP_SPEC …] service狀態(tài) newServiceDumperLocked().dumpLocked
prov[iders] [COMP_SPEC …] content provider狀態(tài) dumpProvidersLocked()
p[rocesses] [PACKAGE_NAME] 進(jìn)程狀態(tài) dumpProcessesLocked()
o[om] 內(nèi)存管理 dumpOomLocked()
i[ntents] [PACKAGE_NAME] pending intent狀態(tài) dumpPendingIntentsLocked()
r[ecents] 最近activity dumpRecentsLocked()
perm[issions] URI授權(quán)情況 dumpPermissionsLocked()
all 所有activities信息 dumpActivity()
top 頂部activity信息 dumpActivity()
package package相關(guān)信息 dump()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末敦腔,一起剝皮案震驚了整個濱河市均澳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌符衔,老刑警劉巖找前,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異判族,居然都是意外死亡躺盛,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門形帮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來槽惫,“玉大人,你說我怎么就攤上這事辩撑〗缧保” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵合冀,是天一觀的道長各薇。 經(jīng)常有香客問我,道長君躺,這世上最難降的妖魔是什么峭判? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮棕叫,結(jié)果婚禮上林螃,老公的妹妹穿的比我還像新娘。我一直安慰自己俺泣,他們只是感情好疗认,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布急侥。 她就那樣靜靜地躺著,像睡著了一般侮邀。 火紅的嫁衣襯著肌膚如雪坏怪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天绊茧,我揣著相機與錄音铝宵,去河邊找鬼。 笑死华畏,一個胖子當(dāng)著我的面吹牛鹏秋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播亡笑,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼侣夷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了仑乌?” 一聲冷哼從身側(cè)響起百拓,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晰甚,沒想到半個月后衙传,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡厕九,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年蓖捶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扁远。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡俊鱼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出畅买,到底是詐尸還是另有隱情并闲,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布皮获,位于F島的核電站焙蚓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏洒宝。R本人自食惡果不足惜购公,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望雁歌。 院中可真熱鬧宏浩,春花似錦、人聲如沸靠瞎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至佳窑,卻和暖如春制恍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背神凑。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工净神, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人溉委。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓鹃唯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瓣喊。 傳聞我的和親對象是個殘疾皇子坡慌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354