面對龐大程式碼庫,靠 System.out.println 排查 Bug 效率極低。MyEclipse/Eclipse 的 Debug 視角提供強大的動態觀測與控制能力,本文系統整理斷點設定、啟動模式、變數操作、進階按鈕、異常斷點與 Expressions 等實戰技巧。
下拉選單選擇配置。| 類型 | 設定位置 | 觸發時機 | 典型用途 |
|---|---|---|---|
| 行斷點 | 程式碼行左側 | 執行到該行之前暫停 | 通用流程追蹤 |
| 屬性斷點 | 成員變數宣告行 | 讀取/寫入該欄位時 | 追蹤「誰修改了這個欄位」 |
| 方法斷點 | 方法簽名行或呼叫處 | 進入/離開方法時 | 追蹤呼叫堆疊、參數與回傳值 |
| 條件斷點 | 行斷點右鍵 → Breakpoint Properties | 條件運算式為 true 時 | 迴圈第 N 次、特定參數值、例外狀態 |
sum > 8 (✓) / sum > 8; (✗)list.size() > 10「哪行設斷點,哪行即將被執行」 — 斷點暫停於該行尚未執行之前。
反面教材:
public void print() {
int sum = 0; // ← 此行設條件斷點 sum > 5
for (int i = 0; i < 10; i++) sum += i;
System.out.println(sum);
}
錯誤原因:暫停時 sum 尚未初始化,條件運算式會拋 NullPointerException 或判斷失敗。
正確做法:將斷點移至迴圈內或 sum += i; 之後。
Variables 視圖 → 右鍵變數 → Change Value... → 輸入新值 → Enter。
適用場景:測試邊界條件、繞過錯誤資料、模擬特定狀態。

| 圖示/按鈕 | 快捷鍵 | 英文 | 行為 |
|---|---|---|---|
| ▶ | F8 | Resume | 繼續執行至下一個斷點或程式結束 |
| ↓ | F5 | Step Into | 進入方法內部(若為庫原始碼不可見則進入字節碼) |
| ↘ | F6 | Step Over | 執行當前行並停在下一行(方法視為單步,不進入) |
| ↑ | F7 | Step Return | 執行完當前方法並返回呼叫處 |
| ⤴ | — | Drop to Frame | 回退至當前方法開頭,變數狀態復原,重新執行(副作用如 DB 寫入不可逆) |
java.lang.NullPointerException)。位置:Debug 視角右上角 Expressions 標籤頁 →
新增。
支援形式:
sumsum * 3, user.getName().length()calculateTotal(), service.findById(1)list != null && list.size() > 5優於 Variables 視圖處:不受作用域限制、可觀測私有欄位、可評估任意方法回傳值、結果即時更新隨執行推進。
必須先 Terminate (紅色方塊) 停止除錯 → 修改 → 重新 Debug,熱部署 (Hot Code Replace) 僅支援方法體內非結構性變更,結構變更(新增欄位/方法/類)需重啟。