57. Android之程序调试LogCat (转)
無論什么樣的程序開發(fā)過程中,出現(xiàn)錯誤都是不可避免的,一般情況下,語法錯誤會被開發(fā)環(huán)境檢測到,并能及時的提示我們錯誤的位置以及修改的方法,但是邏輯錯誤就不是那么容易被發(fā)現(xiàn)了,通常邏輯錯誤的定位和分析是一件非常困難的事情。
所以在學習Android過程中,繼學習它的程序結構,寫了HelloWorld和一些簡單的界面布局程序之后,我選擇研究一下它的調試工具。LogCat就是其中一個。LogCat是用來獲取系統(tǒng)日志信息的工具,它可以捕獲的信息包括Dalvik虛擬機產(chǎn)生的信息,進程信息,ActivityManager信息,PackagerManager信息,Android運行時信息和應用程序信息等等。
我們可以在打開Eclipse之后,選擇Window?–>?Show?View?->Other菜單,然后在Android->LogCat中選擇LogCat,這樣LogCat便會在Eclipse的下方區(qū)域出現(xiàn)了。
其中,在LogCat的右上方的5個字母分別表示了5種不同類型的日志信息(并以不同顏色加以區(qū)分,級別越高,顏色越突出):
1.?[V]:詳細(Verbose)信息,輸出顏色為黑色
2.?[D]:調試(Debug)信息,輸出顏色是藍色
3.?[I]:通告(Info)信息,輸出顏色為綠色
4.?[W]:警告(Warn)信息,輸出顏色為橙色
5.?[E]:錯誤(Error)信息,輸出顏色為紅色,這里錯誤信息的級別最高,其次是警告信息,然后是通知信息和調試信息,級別最低的是詳細信息。
6.[assert],新版本加入的。
在LogCat中,我們可以通告這5個字母圖標選擇要顯示的信息類型,級別高于所選類型的信息也會在LogCat中顯示,但級別低于所選類型的信息則不會被顯示。
在Android程序調試過程中,首先要引入android.util.Log包,然后使用用來記錄詳細信息的Log.v()、用來記錄調試信息的Log.d()、用來記錄通告信息的Log.i()、用來記錄警告信息的Log.w()、用來記錄錯誤信息的Log.e()這樣五個函數(shù)在程序中設置“日志點”。這些函數(shù)的第一個參數(shù)是日志標簽TAG(就是在你要測試的位置需要一個常量用來標記,標記的名字就是所謂的日志標簽),第二個參數(shù)是實際的信息內容。每當程序運行到我們設置的“日志點”時,應用程序的日志信息便被發(fā)送到LogCat中,我們就可以根據(jù)“日志點”顯示的信息與預期我們在函數(shù)中設置的信息內容是否一致來判斷程序是否存在錯誤,這樣就能根據(jù)“日志點”來迅速找到錯誤的“出事地點”了。
在下面的程序中,演示了Log類的具體使用方法:
1 package wt.relativeLayout; 2 5 import android.app.Activity; 6 7 import android.os.Bundle; 8 9 import android.util.Log; 10 11 import android.widget.Button; 12 13 import android.widget.EditText; 14 15 import android.widget.TextView; 16 20 21 public class RelativeLayout extends Activity { 22 23 final static String TAG = "LOGCAT"; 24 25 private TextView tv = null; 26 27 private EditText et = null; 28 29 private Button btn1 = null; 30 31 private Button btn2 = null; 32 33 @Override 34 35 public void onCreate(Bundle savedInstanceState) { 36 37 super.onCreate(savedInstanceState); 38 39 setContentView(R.layout.main); 40 41 tv = (TextView)findViewById(R.id.label); 42 43 et = (EditText)findViewById(R.id.entry); 44 45 btn1 = (Button)findViewById(R.id.cancel); 46 47 btn2 = (Button)findViewById(R.id.ok); 48 49 tv.setText(R.string.name); 50 51 btn1.setText(R.string.button1); 52 53 btn2.setText(R.string.button2); 54 55 56 57 Log.v(TAG, "This is Verbose"); 58 59 Log.d(TAG, "This is Debug"); 60 61 Log.i(TAG, "This is Info"); 62 63 Log.w(TAG, "This is Warn"); 64 65 Log.e(TAG, "This is Error"); 66 67 } 68 69 }程序運行后,LogCat捕獲得到應用程序發(fā)送的日志信息,顯示結果如下圖:
通過結果我們發(fā)現(xiàn),即使我們事先選擇了某個特定的日志信息的級別,產(chǎn)生的日志信息還是有很多,需要我們逐條去閱讀,給我們帶來很大的麻煩。這時我們就要用到一個LogCat提供的“過濾”功能了,在右上角的“+”號和“-”號,分別是添加和刪除過濾器。我們可以根據(jù)日志信息的標簽(Tag)、產(chǎn)生日志的進程編號(Pid)或者信息等級(Level),對顯示的日志內容進行過濾。在實際使用中,我們最好為每一個類聲明一個字符串常量TAG,這樣在Logcat中我們可以容易區(qū)分不同的類的日志了。
下面使用在LogCat右上角的“+”號,添加一個名為LogcatFilter的過濾器,并設置過濾條件為“標簽=LOGCAT”,下圖為過濾器的具體設置方法:
?
?
過濾器設置好后,LogcatFilter過濾后的日志信息如下圖,這樣,無論什么類型的日志信息,屬于哪個進程,只要標簽為LOGCAT,都將顯示在LogcatFilter內。
?
運行測試后,對logCat中的log通過配置l過濾器進行過濾
?
這樣,調試工作就完成了。
轉載于:https://www.cnblogs.com/benchao/p/5448359.html
總結
以上是生活随笔為你收集整理的57. Android之程序调试LogCat (转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 团队作业(五)——旅游行业的手机App
- 下一篇: 九 AIDL