在程式設計領域,通常需要確定程式是否在偵錯器的監視下運作。在 C# 中,可以使用 System.Diagnostics.Debugger.IsAttached 輕鬆實現這一點。但是 Go 呢,特別是在使用 GoLand 偵錯器時?
探索調試標誌
在 Go 中,識別調試器執行並不像在 C# 中那麼簡單。然而,一個聰明的方法是利用建立標籤來區分調試和非調試模式。透過在執行 dlv 時利用 --build-flags 參數,可以傳遞特定標籤來衡量偵錯器的存在。
使用Delve 實作
實作此方法,建立兩個Go原始檔:
這些標籤決定是否isdelve 套件中的 Enabled 常數為 true(偵錯模式)或 false(非偵錯模式)。
在 Go 主程式中,匯入 isdelve 套件並檢查 Enabled 常數以決定偵錯狀態。
GoLand 中的配置
要在GoLand 中啟用此功能,請導航至「運行/偵錯組態」 ' 並將-tags=delve 新增至'Go工具參數'。這會將程式配置為使用調試標誌進行建置。
外部偵錯模式
在非GoLand 環境中,使用dlv debug --build-flags='-tags= delve' a.go 使用指定標籤呼叫偵錯器。
其他替代
另一種方法涉及在偵錯器啟動後使用 delve 的 set 命令手動設定變數。這在特定場景下提供了更大的靈活性。
以上是如何檢測 Go 程式是否正在調試器(例如 GoLand)下運行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!