iT邦幫忙

DAY 19
8

深入淺出Android程式設計30天系列 第 19

深入淺出Android程式設計(18)-如何除錯

在這個章節要來說明如何利用工具來進行程式的除錯,在Android SDK有大量的工具來幫助程式進行除錯。
在這個章節要來說明如何利用工具來進行程式的除錯,在Android SDK有大量的工具來幫助程式進行除錯,目前有下述工具可以進行程式上的除錯。

A.DDMS工具-圖形介面程式支援埠位傳送(如此要在IDE開發工具設定程式中斷點),模擬器的螢幕擷取,執行緒與堆疊資訊,以及其它功能,也可以執行Logcat取得Log資訊,有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/ddms.html

B.Logcat工具–轉儲系統訊息log,訊息包含模擬器發生錯誤時的堆疊追蹤,和Log訊息,有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/ddms.html#logcat

產生出來的訊息,如下述訊範例:

I/MemoryDealer( 763): MemoryDealer (this=0x54bda0): Creating 2621440
bytes heap at 0x438db000
I/Logger( 1858): getView() requesting item number 0
I/Logger( 1858): getView() requesting item number 1
I/Logger( 1858): getView() requesting item number 2
D/ActivityManager( 763): Stopping: HistoryRecord{409dbb20
com.google.android.home.AllApps}

C.Android的Log類別–在Android SDK有提供一個log類別可以在模擬器上將Log訊息輸出到檔案,如果執行Logcat工具,那可以及時讀取訊息。在撰寫程式碼加入少量的log方法叫用:
使用Log類別,要依訊息需求狀況來使用,可以應用的方式如下所述:
 Log.v() (verbose等級)
 Log.d() (debug等級)
 Log.i() (information等級)
 Log.w() (warning等級)
 Log.e() (error等級)
等方法,如何使用此類別,如下述範例:

Log.i("MyActivity", "MyClass.getView() — Requesting item number " +position)

有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/android/util/Log.html

D.TraceView工具–可以使用TraceView這個圖形化介面讀取器來讀取Android所儲存檔案的log檔案,有關此工具在Android SDK 如何運作,請參考下述網址:http://code.google.com/android/reference/traceview.html

E.在Eclipse使用ADT外掛–Eclipse的ADT外掛包含一些整合好的除錯工具(例如:ADB,DDMS,Logcat輸出與其它功能)。下述為在ADT外掛時,如何簡單的進行除錯:

步驟一:在專案的程式碼列的左邊設定程式中斷點(Toggle Breakpoint),先選取一段程式碼,在程式碼列的左邊的地方,按下滑鼠右鍵,就會出現選單,選取「Toggle Breakpoint」選項,那在程式碼列的左邊的地方就會出現一個中斷點的符號,如圖47所示。


圖47

步驟二:下一步,選取選單「Run」中的選取「Debug」選項,來除錯應用程式。如圖48所示。

圖48

步驟三:在Debug模式下,進行除錯時,就會出現整合時的DDMS視窗及LogCat視窗,如圖49、圖50所示。


圖49


圖50

F.除錯與測試裝置設定-Android SDK也有提供多種重要訊息的設定,例如:中央處理器使用率與顯示頻率,可以參考下一章節的說明。


上一篇
深入淺出Android程式設計(17)-如何在其他IDE或工具開發Android應用程式(下)
下一篇
深入淺出Android程式設計(19)-如何除錯及測試模擬裝置的設定
系列文
深入淺出Android程式設計30天29
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言