學了一年的Android,還不會調試?你白學了!

本文原創首發CSDN,本文鏈接 https://blog.csdn.net/qq_41464123/article/details/107141182,作者博客https://blog.csdn.net/qq_41464123 ,轉載請帶上本鏈接,尤其是腳本之家、碼神島等平臺,謝謝配合。


目錄

零、前言

一、 使用 Log 類來輸出日誌信息

1.1 Log.i()

1.2 Log.e()

1.3 Log.d()

1.4 Log.v()

1.5 Log.w()

二、 Android程序調試

2.1 加斷點

2.2 簡單調試

2.3 單步跳過

2.4 單步跳入

2.5 跳到下一斷點

2.6 停止調試


零、前言

開發Android程序時,不僅要注意程序代碼的準確性和合理性,還要處理程序中可能出現的異常。Android SDK爲我們提供了Log類來獲取程序的日誌信息,也提供了LogCat管理器,用來查看程序運行的日誌信息及錯誤日誌。本文將詳細的講解如何在android studio中,對Android程序進行調試以及DDMS工具的使用

 

 

一、 使用 Log 類來輸出日誌信息

Android SDK中提供了Log類來獲取程序運行時的日誌信息,該類在android.util包中,它繼承了java.lang.Object類。Log類提供了一些方法,用來輸出日誌信息,常用的是以下幾個:

方法 解析
Log.i() 輸出INFO程序日誌信息
Log.e() 輸出ERROR錯誤日誌信息
Log.d() 輸出DEBUG調試日誌信息
Log.v() 輸出VERBOSE冗餘日誌信息
Log.w() 輸出WARN警告日誌信息

上表中列出的Log類的這些方法都有多種重載形式,下面將介紹經常用到的重載形式:


1.1 Log.i()

Log.i()主要用來輸出INFO程序日誌信息。程序員經常用到的重載形式語法:

public static int i (String key,String value)

key:String字符串,用來爲日誌信息指定標籤,程序員經常將他命名爲該類的名稱,加以區分。

value:String字符串,用來表示要輸出的字符串信息。

INFO程序日誌在DDMS的LogCat面板中,一般使用綠色的文字來表示。


1.2 Log.e()

Log.e()方法主要用來輸出ERROR錯誤日誌信息。程序員經常用到的重載形式:

public static int e (String key,String value)

key:String字符串,用來爲日誌信息指定標籤,程序員經常將他命名爲出現錯誤的類名稱,加以區分。

value:String字符串,用來表示要輸出的字符串信息。

ERROR錯誤日誌在DDMS的LogCat面板中,一般使用紅色的文字來表示。


1.3 Log.d()

Log.d()方法主要用來輸出DEBUG調試日誌信息。程序員經常用到的重載形式:

public static int d (String key,String value)

key:String字符串,用來爲日誌信息指定標籤,程序員經常將他命名爲可能出現DEBUG的類名稱,加以區分。

value:String字符串,用來表示要輸出的字符串信息。

DEBUG調試日誌在DDMS的LogCat面板中,一般使用藍色的文字來表示。


1.4 Log.v()

Log.v()方法主要用來輸出VERBOSE冗餘日誌信息。程序員經常用到的重載形式:

public static int v (String key,String value)

key:String字符串,用來爲日誌信息指定標籤,程序員經常將他命名爲可能出現冗餘的類名稱,加以區分。

value:String字符串,用來表示要輸出的字符串信息。

VERBOSE冗餘日誌在DDMS的LogCat面板中,一般使用黑色的文字來表示。


1.5 Log.w()

Log.w()方法主要用來輸出WARN警告日誌信息。程序員經常用到的重載形式:

public static int w (String key,String value)

key:String字符串,用來爲日誌信息指定標籤,程序員經常將他命名爲可能出現警告的類名稱。

value:String字符串,用來表示要輸出的字符串信息。

WARN警告日誌在DDMS的LogCat面板中,一般使用橘黃色的文字來表示。


我們可以在MainActivity.java中輸入以下代碼

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.e("zwz01","錯誤信息");
        Log.w("zwz02","警告信息");
        Log.i("zwz03","普通信息");
        Log.d("zwz04","調試信息");
        Log.v("zwz05","冗餘信息");

    }
}

 打開DDMS工具,單機LogCat日誌面板,可以在面板內看到如下信息。

 

二、 Android程序調試

 

在程序開發過程中,程序員會不斷體會到程序調試的重要性。爲了驗證Android的運行狀況是否和自己想的一樣,程序員一般都會在某個方法調用開始和結束的位置,依次使用Log.i()方法輸出一定的信息,並根據這些輸出信息來判斷程序的執行狀況。當然這是一種非常過時的程序調試方法,而且會經常造成程序代碼混亂,下面來介紹使用Android studio自帶的調試工具來調試Android應用程序的方法。


本文原創首發CSDN,本文鏈接 https://blog.csdn.net/qq_41464123/article/details/107141182​​​​​​​,作者博客https://blog.csdn.net/qq_41464123 ,轉載請帶上本鏈接,尤其是腳本之家、碼神島等平臺,謝謝配合。


2.1 加斷點

下面將詳細講解使用 Android Studio 內置的Android調試器調試Android程序的方法,使用該調試器可以設置程序的斷點、實現程序的但不執行、在調試過程中查看變量和表達式的值等調試操作,這樣可以避免上述所說的使用Log.i()方法輸出調試信息。

使用 Android Studio 的Android調試器需要先設置程序斷點,然後使用單步調試分別執行程序代碼的每一行。

設置斷點是程序調試中必不可少的有效手段,和java代碼在eclipse中調試一樣,Android調試器在每次遇到程序斷點的時候,都會將當前線程掛起,也就是說暫停當前程序的運行。在 Android Studio中,可以在Android編輯器中單擊顯示代碼行號的位置,就可以添加或者刪除當前行的斷點,如下圖所示:

 

2.2 簡單調試

爲程序設置斷點後,單擊工具欄的Debug按鈕,或者右擊代碼區域,選擇Debug MainActivity.java,將在Android Studio 的底部顯示調試面板,查看到當前相關變量的值,如下圖所示:

 

 

在調試面板中,可以通過工具欄上的按鈕執行相應的調試操作,比如單步跳過、單步跳入等等。常用的調試操作如下:

2.3 單步跳過

 

在工具欄中單擊 單步跳過,或者按下F8,將執行單步跳過操作,即運行單獨的一行程序代碼,但是不進入調用方法的內部,然後跳到下一個可執行點。

如果運行a + b程序,代碼如下:

public class MainActivity extends AppCompatActivity {

    public static int add (int x,int y){
        return x + y;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        int a = add(1,2);

        int b = add(-1,-2);
    }
}

在int a = add(1,2);處加上斷點

 

然後按下F8,我們可以看到,程序直接運行到第20行,而沒有進入add()方法。

 

 

如果不斷地執行單步跳過操作,會每次執行一行的程序代碼,直到程序結束或者等待用戶操作(如輸入)。

 

2.4 單步跳入

在工具欄點擊 單步跳入 , 或者按下F7鍵,就會跳入到調用方法或對象內部單步執行程序

還是剛剛的 a + b 的例子,在第18行斷點處,按下F7,則會進入到add()方法的內部。

 

2.5 跳到下一斷點

在工具欄中單擊 跳到下一斷點 按鈕,或者按下F9,會繼續向下執行,直到下一個斷點的位置。如果程序中沒有斷點或者拋出了異常,將直接運行到程序結束。

 

2.6 停止調試

在工具欄中單擊停止按鈕,即紅色的正方形:,會停止程序的調試。需要注意的是,該操作不回停止程序的運行,而是會跳過所有的調試。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章