更新時間:2022-01-18 11:04:33 來源:動力節點 瀏覽2921次
Eclipse 對調試應用程序有很好的支持。它可視化逐步執行并幫助我們發現錯誤。
為了演示 Eclipse 中的調試功能,我們將使用一個示例程序PerfectSquareCounter。該程序計算給定數字下的完美平方總數,甚至完美平方數:
public class PerfectSquareCounter {
static int evenPerfectSquareNumbers = 0;
public static void main(String[] args) {
int i = 100;
System.out.println("Total Perfect Squares: " + calculateCount(i));
System.out.println("Even Perfect Squares : " + evenPerfectSquareNumbers);
}
public static int calculateCount(int i) {
int perfectSquaresCount = 0;
for (int number = 1; number <= i; number++) {
if (isPerfectSquare(number)) {
perfectSquaresCount++;
if (number % 2 == 0) {
evenPerfectSquareNumbers++;
}
}
}
return perfectSquaresCount;
}
private static boolean isPerfectSquare(int number) {
double sqrt = Math.sqrt(number);
return sqrt - Math.floor(sqrt) == 0;
}
}
(1)調試模式
首先,我們需要在 Eclipse 中以調試模式啟動 Java 程序。這可以通過兩種方式實現:
右鍵單擊編輯器并選擇Debug As -> Java Application(如下圖所示)
從工具欄調試程序(在下面的屏幕截圖中突出顯示)
(2)斷點
我們需要定義程序執行應該暫停以進行調查的點。這些稱為斷點,適用于方法。它們也可以在執行之前或執行期間隨時定義。
基本上,有 3 種方法可以在程序中添加斷點:
右鍵單擊該行對應的標記欄(垂直標尺),然后選擇 Toggle Breakpoint(如下圖所示)
在編輯器中按Ctrl+Shift+B在必要的行上
雙擊所需行對應的標記欄(垂直標尺)
(3)代碼流控制
現在調試器在給定的斷點處停止,我們可以繼續執行進一步的操作。
讓我們假設調試器當前按照下面的屏幕截圖在第 16 行定位:
最常用的調試選項是:
Step Into (F5) -此操作進入當前行中使用的方法(如果有);否則,它繼續到下一行。在此示例中,它將采用方法isPerfectSquare()中的調試器
Step Over (F6) –此操作處理當前行并進入下一行。在此示例中,這將執行方法isPerfectSquare()并繼續執行下一行
Step Return (F7) -此操作完成當前方法并將我們帶回調用方法。因為在這種情況下,我們在循環中有一個斷點,它仍然在方法中,否則它會回到主方法
Resume (F8)——這個操作將繼續執行直到程序結束,除非我們遇到任何進一步的斷點
(4)調試視角
當我們在調試模式下啟動程序時,Eclipse 會提示選擇切換到調試透視圖。Debug 透視圖是一些有用的視圖的集合,可幫助我們可視化調試器并與調試器交互。
我們也可以隨時手動切換到 Debug 透視圖。
以下是其中包含的一些最有用的視圖:
調試視圖——這顯示了不同的線程和調用堆棧跟蹤
變量視圖——這顯示了任何給定點的變量值。如果我們需要查看靜態變量,我們需要明確指定
斷點——這顯示了不同的斷點和觀察點(我們將在下面看到)
Debug Shell – 這允許我們在調試時編寫和評估自定義代碼(稍后會介紹一個示例)
在本節中,我們將介紹一些有助于我們在 Eclipse 中進行調試的重要技術。
(1)變量
我們可以在 Variables 視圖下看到執行過程中變量的值。為了查看靜態變量,我們可以選擇下拉選項Java -> Show Static Variables。
使用變量視圖,可以在執行期間將任何值更改為所需值。
例如,如果我們需要跳過一些數字并直接從數字 80 開始,我們可以通過更改變量number的值來實現:
(2)檢查值
如果我們需要檢查 Java 表達式或語句的值,我們可以在編輯器中選擇特定的表達式,右鍵單擊,然后檢查,如下所示。一個方便的快捷方式是在表達式上按 Ctrl+Shift+I 以查看值:
如果我們需要永久檢查這個表達式,我們可以右鍵單擊并觀察。現在,它被添加到 Expressions 視圖中,并且可以在不同的運行中看到這個表達式的值。
(3)調試外殼
在調試會話的上下文中,我們可以編寫和運行自定義代碼來評估可能性。這是在調試外殼中完成的。
例如,如果我們需要交叉檢查sqrt功能的正確性,我們可以在 Debug Shell 中進行。在代碼上,右鍵單擊 -> Inspect以查看值:
(4)條件斷點
在某些情況下,我們只想針對特定條件進行調試。我們可以通過以下兩種方式之一向斷點添加條件來實現這一點:
右鍵單擊斷點并選擇斷點屬性
在斷點視圖中,選擇斷點并指定條件
例如,我們可以指定斷點,僅當number等于 10 時才暫停執行:
(5)觀察點
斷點用于方法, 觀察點用于類級變量。在當前示例中,evenPerfectSquareNumbers聲明上的斷點稱為觀察點。現在,每次在觀察點上訪問或修改字段時,調試器都會暫停執行。
這是默認行為,可以在觀察點的屬性中進行更改。
在這個例子中,每次完美平方為偶數時,調試器都會停止執行:
(6)觸發點
假設我們正在調試具有大量源代碼的應用程序中的復雜問題。由于斷點分散,調試器將繼續暫停流程。
當一個斷點被標記為觸發點時,意味著其余的斷點只有在這個斷點被命中時才會被啟用。
例如,在下面的屏幕截圖中,isPerfectSquare()上的斷點應該在循環中的每次迭代中被命中。但是,我們已將calculateCount()方法上的斷點指定為觸發點以及條件。
因此,當迭代計數達到 10 時,這將觸發其余的斷點。因此,從現在開始,如果isPerfectSquare()上的斷點被命中,執行將暫停:
(7)遠程調試
最后,如果應用程序在 Eclipse 之外運行,我們仍然可以使用上述所有功能,前提是遠程應用程序允許調試。在 Eclipse 中,我們將選擇Debug 作為 Remote Java Application。
在本快速指南中,我們了解了在 Eclipse IDE 中調試程序的基礎知識和不同的技術。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習