Android程序調試–LogCat android
不管什麼樣的程序開發過程當中,出現錯誤都是不可避免的,通常狀況下,語法錯誤會被開發環境檢測到,並能及時的提示咱們錯誤的位置以及修改的方法,可是邏輯錯誤就不是那麼容易被發現了,一般邏輯錯誤的定位和分析是一件很是困難的事情。 app
因此在學習Android過程當中,繼學習它的程序結構,寫了HelloWorld和一些簡單的界面佈局程序以後,我選擇研究一下它的調試工具。LogCat就是其中一個。LogCat是用來獲取系統日誌信息的工具,它能夠捕獲的信息包括Dalvik虛擬機產生的信息,進程信息,ActivityManager信息,PackagerManager信息,Android運行時信息和應用程序信息等等。 ide
咱們能夠在打開Eclipse以後,選擇Window –> Show View ->Other菜單,而後在Android->LogCat中選擇LogCat,這樣LogCat便會在Eclipse的下方區域出現了。
其中,在LogCat的右上方的5個字母分別表示了5種不一樣類型的日誌信息(並以不一樣顏色加以區分,級別越高,顏色越突出): 函數
1. [V]:詳細(Verbose)信息,輸出顏色爲黑色 工具
2. [D]:調試(Debug)信息,輸出顏色是藍色 佈局
3. [I]:通告(Info)信息,輸出顏色爲綠色 學習
4. [W]:警告(Warn)信息,輸出顏色爲橙色 測試
5. [E]:錯誤(Error)信息,輸出顏色爲紅色,這裏錯誤信息的級別最高,其次是警告信息,而後是通知信息和調試信息,級別最低的是詳細信息。 spa
6.[assert],新版本加入的。 調試
在LogCat中,咱們能夠通告這5個字母圖標選擇要顯示的信息類型,級別高於所選類型的信息也會在LogCat中顯示,但級別低於所選類型的信息則不會被顯示。
在Android程序調試過程當中,首先要引入android.util.Log包,而後使用用來記錄詳細信息的Log.v()、用來記錄調試信息的Log.d()、用來記錄通告信息的Log.i()、用來記錄警告信息的Log.w()、用來記錄錯誤信息的Log.e()這樣五個函數在程序中設置「日誌點」。這些函數的第一個參數是日誌標籤TAG(就是在你要測試的位置須要一個常量用來標記,標記的名字就是所謂的日誌標籤),第二個參數是實際的信息內容。每當程序運行到咱們設置的「日誌點」時,應用程序的日誌信息便被髮送到LogCat中,咱們就能夠根據「日誌點」顯示的信息與預期咱們在函數中設置的信息內容是否一致來判斷程序是否存在錯誤,這樣就能根據「日誌點」來迅速找到錯誤的「出事地點」了。
在下面的程序中,演示了Log類的具體使用方法:
package wt.relativeLayout;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.util.Log;
public class RelativeLayout extends Activity {
final static String TAG = "LOGCAT";
private TextView tv = null;
private EditText et = null;
private Button btn1 = null;
private Button btn2 = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.label);
et = (EditText)findViewById(R.id.entry);
btn1 = (Button)findViewById(R.id.cancel);
btn2 = (Button)findViewById(R.id.ok);
tv.setText(R.string.name);
btn1.setText(R.string.button1);
btn2.setText(R.string.button2);
Log.v(TAG, "This is Verbose");
Log.d(TAG, "This is Debug");
Log.i(TAG, "This is Info");
Log.w(TAG, "This is Warn");
Log.e(TAG, "This is Error");
}
}
程序運行後,LogCat捕得到到應用程序發送的日誌信息,顯示結果以下圖:
經過結果咱們發現,即便咱們事先選擇了某個特定的日誌信息的級別,產生的日誌信息仍是有不少,須要咱們逐條去閱讀,給咱們帶來很大的麻煩。這時咱們就要用到一個LogCat提供的「過濾」功能了,在右上角的「+」號和「-」號,分別是添加和刪除過濾器。咱們能夠根據日誌信息的標籤(Tag)、產生日誌的進程編號(Pid)或者信息等級(Level),對顯示的日誌內容進行過濾。在實際使用中,咱們最好爲每個類聲明一個字符串常量TAG,這樣在Logcat中咱們能夠容易區分不一樣的類的日誌了。
下面使用在LogCat右上角的「+」號,添加一個名爲LogcatFilter的過濾器,並設置過濾條件爲「標籤=LOGCAT」,下圖爲過濾器的具體設置方法:
過濾器設置好後,LogcatFilter過濾後的日誌信息以下圖,這樣,不管什麼類型的日誌信息,屬於哪一個進程,只要標籤爲LOGCAT,都將顯示在LogcatFilter內。
運行測試後,對logCat中的log經過配置l過濾器進行過濾
這樣,調試工做就完成了。