首頁 >後端開發 >Golang >有沒有辦法偵測Go程式中的GoLand偵錯器?

有沒有辦法偵測Go程式中的GoLand偵錯器?

Susan Sarandon
Susan Sarandon原創
2024-11-29 07:52:10146瀏覽

Is There a Way to Detect the GoLand Debugger in Go Programs?

Go 程式中的Delve 偵錯器偵測

在某些情況下,確定Go 程式是否在GoLand 偵錯器下運作可能是有利的。在 C# 中,System.Diagnostics.Debugger.IsAttached 屬性提供了此功能。

Go 中是否有等效項?

沒有,目前沒有內建的Go 中的方法可以像 C# 一樣偵測偵錯器的存在。

使用建置的解決方法標籤

但是,可以使用建立標籤來解決此問題。透過在 delve 偵錯器運行時設定建置標記,您可以檢查它是否存在於程式碼中。

  1. 建立兩個檔案:

    • isdelve/delve .go(定義delve 運行時的標籤)
    • isdelve/nodelve.go (定義當delve 運行時的標籤) delve未運行)
  2. 在a.go 中,新增:

    import (
        "isdelve"
        "fmt"
    )
    
    func main() {
        fmt.Println("delve", isdelve.Enabled)
    }
  3. 在GoLand 中,啟用「Run/」下的建置標籤透過在「Go 工具」中新增-tags=delve來調試配置argument:'.
  4. 現在,您可以檢查delve 調試器是否正在運行:

    • 如果go run a.go 報告delve false,則它沒有運行。
    • 如果dlv debug --build-flags='-tags=delve' a.go 回報delve true,則為

使用delve的set 指令

作為替代方案,delve提供了 set 命令來在啟動後手動設定變數調試器。

以上是有沒有辦法偵測Go程式中的GoLand偵錯器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn