首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

MyEclipse 除錯實戰全攻略:斷點類型、變數修改、進階技巧與異常追蹤

     編輯:Java 綜合教學

前言

面對龐大程式碼庫,靠 System.out.println 排查 Bug 效率極低。MyEclipse/Eclipse 的 Debug 視角提供強大的動態觀測與控制能力,本文系統整理斷點設定、啟動模式、變數操作、進階按鈕、異常斷點與 Expressions 等實戰技巧。

一、斷點設定與啟動除錯

1. 設定斷點

  • 編輯器左側標尺列雙擊,或右鍵 Toggle Breakpoint。
  • 圖示:藍色圓點 = 啟用;白色圓點 = 停用;帶問號 = 條件斷點。

2. 啟動除錯模式

  • 專案右鍵 → Debug As → Java Application。
  • 或工具列甲蟲圖示 Debug 圖示 下拉選單選擇配置。

二、三大核心斷點類型與適用場景

類型設定位置觸發時機典型用途
行斷點程式碼行左側執行到該行之前暫停通用流程追蹤
屬性斷點成員變數宣告行讀取/寫入該欄位時追蹤「誰修改了這個欄位」
方法斷點方法簽名行或呼叫處進入/離開方法時追蹤呼叫堆疊、參數與回傳值
條件斷點行斷點右鍵 → Breakpoint Properties條件運算式為 true 時迴圈第 N 次、特定參數值、例外狀態

條件斷點撰寫規則

  • 不可含分號:sum > 8 (✓) / sum > 8; (✗)
  • 可呼叫無副作用方法:list.size() > 10
  • 記得勾選 Condition 並輸入運算式。

三、斷點位置放置的黃金原則

「哪行設斷點,哪行即將被執行」 — 斷點暫停於該行尚未執行之前。

反面教材:

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。
適用場景:測試邊界條件、繞過錯誤資料、模擬特定狀態。

修改變數值對話框

五、除錯控制按鈕完全指南

圖示/按鈕快捷鍵英文行為
▶F8Resume繼續執行至下一個斷點或程式結束
↓F5Step Into進入方法內部(若為庫原始碼不可見則進入字節碼)
↘F6Step Over執行當前行並停在下一行(方法視為單步,不進入)
↑F7Step Return執行完當前方法並返回呼叫處
⤴—Drop to Frame回退至當前方法開頭,變數狀態復原,重新執行(副作用如 DB 寫入不可逆)

Drop to Frame 進階用法

  • 僅限當前執行緒堆疊幀,無法跨方法/執行緒回退。
  • 操作:Debug 視圖 → 執行緒右鍵 → Drop to Frame。
  • 搭配 Change Value 可反覆測試同一段邏輯的不同輸入。

六、異常斷點 —— 精準定位拋出異常處

  1. Console 紅字堆疊追蹤複製異常全名(如 java.lang.NullPointerException)。
  2. Breakpoints 視圖右上角 Add Java Exception Breakpoint (J!) → 貼上類名 → OK。
  3. 啟動除錯,程式將在拋出異常的那一行自動暫停(即使未捕獲、即使在庫程式碼中)。
  4. 若僅想定位位置,無需在程式碼設行斷點。

七、Expressions 視圖 —— 靈活觀測任意運算式

位置:Debug 視角右上角 Expressions 標籤頁 → 新增運算式圖示 新增。

支援形式:

  • 變數:sum
  • 運算式:sum * 3, user.getName().length()
  • 方法呼叫:calculateTotal(), service.findById(1)
  • 條件判斷:list != null && list.size() > 5

優於 Variables 視圖處:不受作用域限制、可觀測私有欄位、可評估任意方法回傳值、結果即時更新隨執行推進。

八、修改程式碼/斷點屬性後的生效原則

必須先 Terminate (紅色方塊) 停止除錯 → 修改 → 重新 Debug,熱部署 (Hot Code Replace) 僅支援方法體內非結構性變更,結構變更(新增欄位/方法/類)需重啟。

九、參考資源

  1. 上一篇文章:
  2. 下一篇文章:
Nginx 基礎入門實戰:CentOS 安裝、目錄結構、核心命令、平滑升級、負載均衡與 Rewrite 規則 Java 標號機制詳解:break/continue 配合標號實現多層循環精準控制 Spring 整合 MyBatis 完整指南:SqlSessionFactory 配置、原始 DAO 與 Mapper 掃描代理 Web 開發中 Servlet 技術全面解析:生命周期、請求處理、線程安全與配置實戰 JS 載入時機陷阱:為什麼