Android調試工具及方法

來源:互聯網
上載者:User
Logcat

Dump一份系統訊息的日誌。這些訊息包括模擬器拋出錯誤時的堆疊追蹤。

Android Log

一個記錄日誌的類,用來將訊息寫入模擬器上的記錄檔中。如果你在DDMS上運行logcat的話你可以就即時查看訊息。在你的代碼中加入幾個寫日誌方法的調用。
為了使用Log類,你只需要調用Log.v()(詳細),Log.d()(debug),Log.i()(information),Log.w()(warning) 或者 Log.e()(error),根據你想獲得的日誌資訊來選擇相應的方法

Log.i("MyActivity", "MyClass.getView() — Requesting item number " + position)你可以用logcat來讀取這些資訊
Traceview
Android可以儲存一個日誌用來記錄被調用的方法以及該方法被調用的次數,通過Traceview你可以在一個圖形化的介面中查看這個記錄檔。
adb

Android 調試橋(adb)是多種用途的工具,該工具可以協助你你管理裝置或模擬器的狀態。

發出Android命令: 你可以在你的開發機上的命令列或指令碼上發布Android命令,使用方法:

adb [-d|-e|-s <serialNumber>] <command>

進入Shell:adb shell

查詢模擬器/裝置執行個體
adb devices 列出模擬器的序號和狀態

給特定的模擬器/裝置執行個體發送命令
如果有多個模擬器/裝置執行個體在運行,在發布adb命令時需要指定一個目標執行個體。 這樣做,請使用-s 選項的命令。在使用的-s 選項是
adb -s <serialNumber> <command>
如:db -s emulator-5556 install helloWorld.apk

安裝軟體:
adb install <path_to_apk>

從模擬器/裝置中拷入或拷出檔案
可以使用adbpull ,push 命令將檔案複製到一個模擬器/裝置執行個體的資料檔案或是從資料檔案中複製。install 命令只將一個.apk檔案複製到一個特定的位置,與其不同的是,pull 和 push 命令可令你複製任意的目錄和檔案到一個模擬器/裝置執行個體的任何位置。
從模擬器或者裝置中複製檔案或目錄,使用(如下命):
adb pull <remote> <local>
將檔案或目錄複寫到模擬器或者裝置,使用(如下命令)
adb push <local> <remote>
在這些命令中, <local> 和<remote> 分別指通向自己的發展機(本地)和模擬器/裝置執行個體(遠程)上的目標檔案/目錄的路徑
下面是一個例子::
adb push foo.txt /sdcard/foo.txt

查詢日誌 adb logcat

Stopping the adb Server
在某些情況下,你可能需要終止Android 調試系統的運行,然後再重新啟動它。 例如,如果Android 調試系統不響應命令,你可以先終止伺服器然後再重啟,這樣就可能解決這個問題.
用kill-server 可以終止adb server。你可以用adb發出start-server命令來重新啟動伺服器.

裝置上調試和測試的設定

Android提供了眾多的設定使你可以更容易的調試和測試程式。要進入開發設定頁面,在模擬器中轉到Dev Tools > Development Settings。在該設定頁面有以下選項:

  • Debug app:選擇要調試的程式。你不需要設定其關聯至調試器,但是設定這個值有兩個效果:

    • 在調試的時候,如果你在一個斷點處暫停了過長的時間,這個設定會防止Android拋出一個錯誤
    • 這個設定使你可以選擇“等待調試器”選項,使程式只有在調試器關聯上之後才啟動
  • Wait for Debugger:阻塞所選的程式的載入直到有調試器關聯上,這樣你就可以在onCreate()中設定斷點,這對於調試一個Activity的啟動進程是非常重要的。當你對該選項進行了更改,任何正在啟動並執行程式的執行個體都會被終止。你只有在上面的選項中選擇了一個偵錯工具才能夠選中該選項。你也可以在代碼中添加waitForDebugger()來實現同樣的功能。
  • Immediately destroy activities:告訴系統一旦一個activity停止了就銷毀該activity(例如當Android釋放記憶體的時候)。這對於測試代碼onFreeze(Bundle)/onCreate(android.os.Bundle)是非常有用的,否則會比較困難。如果你的程式沒有儲存狀態,那麼選擇這個選項很可能會引發很多問題。
  • Show screen updates:對於任何正在被重繪的screen sections都會在其上閃現一個粉紅色的矩形。這對於發現不必要的screen繪製是很有必要的。
  • Show CPU usage:在螢幕上方顯示CPU資訊,顯示有多少CPU資源正在被使用。上方紅色條顯示總的CPU使用率,它下方綠色的條顯示CPU用在compositing the screen上的時間。注意:在沒有重啟模擬器之前,一旦你開啟了該功能就不能關閉。
  • Show screen FPS:顯示當前的幀率。這對於查看遊戲達到的總的幀率是非常有用的。注意:在沒有重啟模擬器之前,一旦你開啟了該功能就不能關閉。
  • Show background:當沒有activity screens可見時,顯示一個背景模式。一般是不會出現的,僅僅在Debug的時候會出現。

設定的選項在模擬器重啟之後仍然有效,如果要取消設定的選項,在取消設定以後還要重啟模擬器,才會生效。

重要的調試小提示

快速的堆棧dump

要在模擬器上獲得一個堆棧dump,你可以通過adb shell登入,用“ps”找到你想要的進程,然後“kill -3”,
堆疊追蹤資訊就會記錄到記錄檔中了。

在模擬器螢幕上顯示有用資訊

裝置上可以顯示諸如CPU利用率或者對重繪地區的邊緣高亮顯示等有用資訊,在開發設定視窗可以開啟或者關閉這些功能。

從模擬器上擷取系統狀態資訊(dumpstate)

你可以通過Dalvik Debug Monitor Service工具來獲得dumpstate資訊。

從模擬器上擷取程式狀態資訊(dumpsys)

你可以通過Dalvik Debug Monitor Service工具來獲得dumpsys資訊。

擷取無線串連資訊

你可以通過Dalvik Debug Monitor Service工具來獲得無線串連資訊。在Device菜單,選擇“Dump radio state”

日誌記錄跟蹤資料

你可以在一個activity中通過調用android.os.Debug.startMethodTracing()來用日誌來記錄方法調用和其他跟蹤資料。

日誌記錄Radio Data

預設情況下,radio資訊是不會記錄在系統中的(因為資料量巨大)。然而,你可以通過下面的命令來開啟radio記錄adb shelllogcat -b radio

運行adb

Andoid中內建了一個叫adb的工具,該工具功能強大,可以移動並同步檔案到模擬器,轉送連接埠。在模擬器上運行一個UNIX shell。

從模擬器上擷取螢幕

Dalvik Debug Monitor Server (DDMS)可以從模擬器上擷取螢幕

利用調試協助類

     Android為了開發人員的方便提供了諸如util.Log和Debug等協助類

命令列運行程式的方法

參考:http://www.javaeye.com/topic/201856  http://www.javaeye.com/topic/149227

進入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>

好了,試一下啟動瀏覽器 引用# 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手冊 www.cnblogs.com/jacktu 萬能的G.cn

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.