DSLD 指令碼除錯

工程 | Andrew Eisenberg | 2011 年 8 月 02 日 | ...

不久之前,我介紹了 DSL 描述器 (DSLDs),適用於 Groovy-Eclipse。DSLD 是 Groovy 指令碼,為您 Eclipse 工作區中的 Groovy 專案提供豐富的編輯支援 (內容輔助、導覽等)。由於 DSLD 只能在正在執行的 Eclipse 程序內執行,因此除錯不像啟動 Eclipse 除錯器並逐步執行 Groovy 指令碼那麼簡單。在這篇文章中,我將描述一些簡單和更複雜的技術,您可以用於除錯您的 DSLD。

為了讓所有這些都能運作,您將需要最新的開發版本

簡單且粗略

除錯 DSLD 最簡單且最粗略的方式是使用 println。這會將表達式列印到正在執行的 Eclipse 程序的標準輸出,如果您從命令列啟動 Eclipse,則可以看到標準輸出。但是,我建議改用 log 陳述式。這會將記錄資訊列印到 Groovy 事件主控台

如下例所示,每次 MethodParams.dsld 中的切入點符合時,vals 的目前值將會列印到 Groovy 事件主控台。

log 方法可以在 DSLD 指令碼中的任何位置使用。事件主控台中的所有記錄項目都以 "======" 作為前綴。Groovy 事件主控台也會顯示您指令碼的編譯錯誤和擲出的例外,因此即使 DSLD 指令碼不包含任何 log 陳述式,它也相當有用。

當不使用事件主控台時,最好保持關閉,因為追蹤可能會快速變大,並最終消耗大量記憶體和處理能力。

精緻

Print 和 log 陳述式只有有限的用途。可以為您的 DSLD 取得適當的除錯支援,並具有設定中斷點、逐步執行程式碼和執行除錯評估的功能。即使設定有點複雜,但在除錯複雜的指令碼時,這可能是值得的。基本上,您需要在 Eclipse 除錯器中啟動一個新的 Eclipse 實例 (執行時期工作台),並在那裡除錯您的指令碼。這裡 一個 很多 資訊 可用 關於建立和使用 Eclipse 執行時期工作台,但其中大部分對於 DSLD 除錯來說不是必要的。

以下是必要的步驟

  1. 安裝 Groovy-Eclipse 原始碼 (選用,但對於深入了解 DSLD 如何執行很有用)。您可以從 Eclipse 的安裝管理員執行此操作。選擇 Groovy-Eclipse SDK。請參閱 此處以取得更多詳細資訊
  2. 建立並啟動一個新的空 Eclipse 工作區。您可以透過從命令列啟動 Eclipse 並指定新工作區位置的 -data 參數來執行此操作。此工作區是將啟動第二個工作區的主機,您的 DSLD 實際上位於該工作區中。
  3. 在新工作區中建立新的 groovy 專案,最初為空
  4. 啟動執行時期工作台。首先開啟啟動組態對話方塊: 然後透過按兩下Eclipse 應用程式來建立新的啟動組態。在工作區位置區段中,選擇包含您 DSLD 的工作區的檔案系統目錄:
  5. 執行時期工作台啟動後,將要除錯的 DSLD 從執行時期工作區拖放到主機工作區中新建立的專案中。當您執行此操作時,您將看到如下對話方塊: 確保選擇連結。連結的檔案將確保在一個工作區中所做的變更將反映在另一個工作區中。我建議拖放 (而不是將檔案匯入到您的工作區的其他方式),因為這是確保您的檔案已連結而不是複製的最簡單方法。
  6. 在主機工作區中 DSLD 的某處設定中斷點。
  7. 在執行時期工作台中執行一些會觸發您指令碼的操作。或許將滑鼠游標懸停在 DSLD 套用的 Groovy 檔案中感興趣的識別碼上。
  8. Eclipse 將在中斷點停止
  9. 第一次 Eclipse 在中斷點停止時,原始碼將不會出現
    您必須明確將新建立的 Groovy 專案新增到 Eclipse 執行時期啟動組態的來源查閱路徑。一旦您這樣做,原始碼將會可用。
  10. 歡呼!您現在應該能夠為您的 DSLD 使用除錯器了。

變數檢視將會運作:

如果您有 STS,您可以在表達式檢視中執行評估:

在顯示檢視中:

在編輯器中,選取一個表達式並執行 CTRL-Shift-I 或 CMD-Shift-I (在本例中為 names)

請注意,評估中不允許閉包,並且必須在 Groovy -> 除錯器 -> 擴充除錯支援頁面中明確啟用 Groovy 除錯評估

使用此方法除錯您的 DSLD 指令碼將有助於您建立更大的指令碼,以支援更複雜的 Groovy DSL。

取得 Spring 電子報

隨時掌握 Spring 電子報

訂閱

領先一步

VMware 提供訓練和認證,以加速您的進展。

瞭解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔案。

瞭解更多

即將到來的活動

查看 Spring 社群中所有即將到來的活動。

查看全部