搶先一步
VMware 提供培訓和認證,助您快速提升。
瞭解更多不久前,我為 Groovy-Eclipse 引入了 DSL 描述符 (DSLDs)。DSLDs 是 Groovy 指令碼,為 Eclipse 工作空間中的 Groovy 專案提供豐富的編輯支援(內容輔助、導航等)。由於 DSLDs 只能在正在執行的 Eclipse 程序中執行,除錯不像啟動 Eclipse 偵錯程式並單步執行 Groovy 指令碼那麼簡單。在本文中,我將介紹一些用於除錯 DSLDs 的簡單和更復雜的技術。
為了使所有這些工作正常執行,您將需要最新的開發版本:
除錯 DSLDs 最簡單粗暴的方法是使用 println
。這將把表示式列印到執行中的 Eclipse 程序的標準輸出,如果您從命令列啟動 Eclipse,就可以看到這些輸出。然而,我建議改用 log
語句。這會將日誌資訊列印到 Groovy 事件控制檯。
正如您在下面的示例中看到的,每次 MethodParams.dsld
中的切點匹配時,vals
的當前值都會列印到 Groovy 事件控制檯。
log
方法可以在 DSLD 指令碼的任何地方使用。事件控制檯中的所有日誌條目都以 "======" 為字首。Groovy 事件控制檯還會顯示指令碼的編譯錯誤和丟擲的異常,因此即使 DSLD 指令碼不包含任何 log
語句,它也相當有用。
不使用事件控制檯時,最好將其關閉,因為跟蹤資訊可能會迅速變大,並最終消耗大量記憶體和處理能力。
列印和日誌語句的使用是有限的。透過設定斷點、單步除錯程式碼和執行除錯評估,可以為 DSLDs 提供適當的除錯支援。儘管設定有點複雜,但在除錯複雜指令碼時可能值得。本質上,您需要在 Eclipse 偵錯程式中啟動一個新的 Eclipse 例項(一個執行時工作臺),並透過它來除錯指令碼。有 很 多 關於 建立 和 使用 Eclipse 執行時工作臺的資訊,但其中大部分對於 DSLD 除錯來說並非必需。
以下是所需的步驟:
如果您安裝了 STS,可以在表示式檢視中執行評估:
在編輯器中,選擇一個表示式並按下 CTRL-Shift-I 或 CMD-Shift-I(本例中是 names
)。
請注意,閉包不允許在評估中使用,並且必須在 Groovy -> Debugger -> Extended Debugging Support 頁面中明確啟用 Groovy 除錯評估。
使用此方法除錯 DSLD 指令碼將幫助您建立更大的指令碼,以支援更復雜的 Groovy DSLs。