領先一步
VMware 提供訓練和認證,以加速您的進展。
瞭解更多不久之前,我介紹了 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 除錯來說不是必要的。
以下是必要的步驟
如果您有 STS,您可以在表達式檢視中執行評估:
在編輯器中,選取一個表達式並執行 CTRL-Shift-I 或 CMD-Shift-I (在本例中為 names
)
請注意,評估中不允許閉包,並且必須在 Groovy -> 除錯器 -> 擴充除錯支援頁面中明確啟用 Groovy 除錯評估
使用此方法除錯您的 DSLD 指令碼將有助於您建立更大的指令碼,以支援更複雜的 Groovy DSL。