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