[转】:Android调试工具及方法
| -- |
Logcat
Dump一份系統(tǒng)消息的日志。這些消息包括模擬器拋出錯(cuò)誤時(shí)的堆棧跟蹤。
Android Log
一個(gè)記錄日志的類,用來(lái)將消息寫(xiě)入模擬器上的日志文件中。如果你在DDMS上運(yùn)行l(wèi)ogcat的話你可以就實(shí)時(shí)查看消息。在你的代碼中加入幾個(gè)寫(xiě)日志方法的調(diào)用。
為了使用Log類,你只需要調(diào)用Log.v()(詳細(xì)),Log.d()(debug),Log.i()(information),Log.w()(warning)
或者 Log.e()(error),根據(jù)你想獲得的日志信息來(lái)選擇相應(yīng)的方法
Traceview
Android可以保存一個(gè)日志用來(lái)記錄被調(diào)用的方法以及該方法被調(diào)用的次數(shù),通過(guò)Traceview你可以在一個(gè)圖形化的界面中查看這個(gè)日志文件。adb
Android 調(diào)試橋(adb)是多種用途的工具,該工具可以幫助你你管理設(shè)備或模擬器的狀態(tài)。
發(fā)出Android命令: 你可以在你的開(kāi)發(fā)機(jī)上的命令行或腳本上發(fā)布Android命令,使用方法:
adb [-d|-e|-s <serialNumber>] <command>進(jìn)入Shell:adb shell
查詢模擬器/設(shè)備實(shí)例
adb devices 列出模擬器的序列號(hào)和狀態(tài)
給特定的模擬器/設(shè)備實(shí)例發(fā)送命令
如果有多個(gè)模擬器/設(shè)備實(shí)例在運(yùn)行,在發(fā)布adb命令時(shí)需要指定一個(gè)目標(biāo)實(shí)例。 這樣做,請(qǐng)使用-s
選項(xiàng)的命令。在使用的-s 選項(xiàng)是
adb -s <serialNumber> <command>
如:db -s
emulator-5556 install helloWorld.apk
安裝軟件:
adb install <path_to_apk>
從模擬器/設(shè)備中拷入或拷出文件
可以使用adbpull ,push
命令將文件復(fù)制到一個(gè)模擬器/設(shè)備實(shí)例的數(shù)據(jù)文件或是從數(shù)據(jù)文件中復(fù)制。install 命令只將一個(gè).apk文件復(fù)制到一個(gè)特定的位置,與其不同的是,pull 和
push 命令可令你復(fù)制任意的目錄和文件到一個(gè)模擬器/設(shè)備實(shí)例的任何位置。
從模擬器或者設(shè)備中復(fù)制文件或目錄,使用(如下命):
adb pull
<remote> <local>
將文件或目錄復(fù)制到模擬器或者設(shè)備,使用(如下命令)
adb push
<local> <remote>
在這些命令中, <local> 和<remote>
分別指通向自己的發(fā)展機(jī)(本地)和模擬器/設(shè)備實(shí)例(遠(yuǎn)程)上的目標(biāo)文件/目錄的路徑
下面是一個(gè)例子::
adb push foo.txt
/sdcard/foo.txt
查詢?nèi)罩?adb logcat
Stopping the adb Server
在某些情況下,你可能需要終止Android 調(diào)試系統(tǒng)的運(yùn)行,然后再重新啟動(dòng)它。
例如,如果Android 調(diào)試系統(tǒng)不響應(yīng)命令,你可以先終止服務(wù)器然后再重啟,這樣就可能解決這個(gè)問(wèn)題.
用kill-server 可以終止adb
server。你可以用adb發(fā)出start-server命令來(lái)重新啟動(dòng)服務(wù)器.
設(shè)備上調(diào)試和測(cè)試的設(shè)置
Android提供了眾多的設(shè)置使你可以更容易的調(diào)試和測(cè)試程序。要進(jìn)入開(kāi)發(fā)設(shè)置頁(yè)面,在模擬器中轉(zhuǎn)到Dev Tools > Development
Settings。在該設(shè)置頁(yè)面有以下選項(xiàng):
- Debug app:選擇要調(diào)試的程序。你不需要設(shè)定其關(guān)聯(lián)至調(diào)試器,但是設(shè)定這個(gè)值有兩個(gè)效果:
- 在調(diào)試的時(shí)候,如果你在一個(gè)斷點(diǎn)處暫停了過(guò)長(zhǎng)的時(shí)間,這個(gè)設(shè)定會(huì)防止Android拋出一個(gè)錯(cuò)誤
- 這個(gè)設(shè)定使你可以選擇“等待調(diào)試器”選項(xiàng),使程序只有在調(diào)試器關(guān)聯(lián)上之后才啟動(dòng)
Wait for
Debugger:阻塞所選的程序的加載直到有調(diào)試器關(guān)聯(lián)上,這樣你就可以在onCreate()中設(shè)置斷點(diǎn),這對(duì)于調(diào)試一個(gè)Activity的啟動(dòng)進(jìn)程是非常重要的。當(dāng)你對(duì)該選項(xiàng)進(jìn)行了更改,任何正在運(yùn)行的程序的實(shí)例都會(huì)被終止。你只有在上面的選項(xiàng)中選擇了一個(gè)調(diào)試程序才能夠選中該選項(xiàng)。你也可以在代碼中添加waitForDebugger()來(lái)實(shí)現(xiàn)同樣的功能。
Immediately destroy
activities:告訴系統(tǒng)一旦一個(gè)activity停止了就銷毀該activity(例如當(dāng)Android釋放內(nèi)存的時(shí)候)。這對(duì)于測(cè)試代碼onFreeze(Bundle)/onCreate(android.os.Bundle)是非常有用的,否則會(huì)比較困難。如果你的程序沒(méi)有保存狀態(tài),那么選擇這個(gè)選項(xiàng)很可能會(huì)引發(fā)很多問(wèn)題。
Show screen updates:對(duì)于任何正在被重繪的screen
sections都會(huì)在其上閃現(xiàn)一個(gè)粉紅色的矩形。這對(duì)于發(fā)現(xiàn)不必要的screen繪制是很有必要的。
Show CPU
usage:在屏幕上方顯示CPU信息,顯示有多少CPU資源正在被使用。上方紅色條顯示總的CPU使用率,它下方綠色的條顯示CPU用在compositing
the screen上的時(shí)間。注意:在沒(méi)有重啟模擬器之前,一旦你開(kāi)啟了該功能就不能關(guān)閉。
Show screen
FPS:顯示當(dāng)前的幀率。這對(duì)于查看游戲達(dá)到的總的幀率是非常有用的。注意:在沒(méi)有重啟模擬器之前,一旦你開(kāi)啟了該功能就不能關(guān)閉。
Show background:當(dāng)沒(méi)有activity
screens可見(jiàn)時(shí),顯示一個(gè)背景模式。一般是不會(huì)出現(xiàn)的,僅僅在Debug的時(shí)候會(huì)出現(xiàn)。
設(shè)定的選項(xiàng)在模擬器重啟之后仍然有效,如果要取消設(shè)定的選項(xiàng),在取消設(shè)定以后還要重啟模擬器,才能生效。
重要的調(diào)試小提示
快速的堆棧dump
要在模擬器上獲得一個(gè)堆棧dump,你可以通過(guò)adb shell登入,用“ps”找到你想要的進(jìn)程,然后“kill -3”,堆棧跟蹤信息就會(huì)記錄到日志文件中了。在模擬器屏幕上顯示有用信息
設(shè)備上可以顯示諸如CPU利用率或者對(duì)重繪區(qū)域的邊緣高亮顯示等有用信息,在開(kāi)發(fā)設(shè)置窗口可以打開(kāi)或者關(guān)閉這些功能。從模擬器上獲取系統(tǒng)狀態(tài)信息(dumpstate)
你可以通過(guò)Dalvik Debug Monitor Service工具來(lái)獲得dumpstate信息。從模擬器上獲取程序狀態(tài)信息(dumpsys)
你可以通過(guò)Dalvik Debug Monitor Service工具來(lái)獲得dumpsys信息。獲取無(wú)線連接信息
你可以通過(guò)Dalvik Debug Monitor Service工具來(lái)獲得無(wú)線連接信息。在Device菜單,選擇“Dump radio state”日志記錄跟蹤數(shù)據(jù)
你可以在一個(gè)activity中通過(guò)調(diào)用android.os.Debug.startMethodTracing()來(lái)用日志來(lái)記錄方法調(diào)用和其他跟蹤數(shù)據(jù)。日志記錄Radio Data
默認(rèn)情況下,radio信息是不會(huì)記錄在系統(tǒng)中的(因?yàn)閿?shù)據(jù)量巨大)。然而,你可以通過(guò)下面的命令來(lái)開(kāi)啟radio記錄 adb shell logcat -b radio運(yùn)行adb
Andoid中自帶了一個(gè)叫adb的工具,該工具功能強(qiáng)大,可以移動(dòng)并同步文件到模擬器,轉(zhuǎn)發(fā)端口。在模擬器上運(yùn)行一個(gè)UNIX shell。從模擬器上獲取屏幕截圖
Dalvik Debug Monitor Server (DDMS)可以從模擬器上獲取屏幕截圖利用調(diào)試幫助類
???? Android為了開(kāi)發(fā)者的方便提供了諸如util.Log和Debug等幫助類
命令行運(yùn)行程序的方法
參考:http://www.javaeye.com/topic/201856?
http://www.javaeye.com/topic/149227
進(jìn)入shell
引用
C:\Documents and Settings\mawenjian>adb
shell
看一下命令的幫助
引用
# am -help
am
-help
Error: Unknown command:
-help
usage: am
[start|instrument]
?????? am start
[-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
??????????????? [-c <CATEGORY> [-c
<CATEGORY>] ...]
??????????????? [-e <EXTRA_KEY>
<EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...]
??????????????? [-n <COMPONENT>]
[-D] [<URI>]
?????? am
instrument [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>]
??????????????? [-w]
<COMPONENT>
好了,試一下啟動(dòng)瀏覽器
引用
# am start -n
com.google.android.browser/com.google.android.browser.BrowserActivity
am start -n
com.google.android.browser/com.google.android.browser.BrowserActivity
Starting: Intent {
comp={com.google.android.browser/com.google.android.browser.BrowserActivity}
}
ok,成功了
大家試試下面的命令吧:
引用
# am start -a android.intent.action.VIEW -d
http://mwjian.javaeye.com
am start
-a android.intent.action.VIEW -d http://mwjian.javaeye.com
Starting: Intent {
action=android.intent.action.VIEW data=http://mwjian.javaeye.com }
# am start -a
android.intent.action.CALL -d tel:88888888
am start -a android.intent.action.CALL
-d tel:88888888
Starting: Intent {
action=android.intent.action.CALL data=tel:88888888 }
# am start -a
android.intent.action.ALL_APPS
am
start -a android.intent.action.ALL_APPS
Starting: Intent {
action=android.intent.action.ALL_APPS }
# am start -a
android.intent.action.VIEW geo:0,0?q=shanghai
am start -a android.intent.action.VIEW
geo:0,0?q=shanghai
Starting: Intent
{ action=android.intent.action.VIEW data=geo:0,0?q=shanghai
}
?
本文參考:Android手冊(cè) www.cnblogs.com/jacktu萬(wàn)能的G.cn
轉(zhuǎn)載于:https://www.cnblogs.com/Jessy/archive/2012/01/17/2324414.html
總結(jié)
以上是生活随笔為你收集整理的[转】:Android调试工具及方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [我研究] A TAXONOMY OF
- 下一篇: Android应用【世界杯知识答题】的界