首頁 >後端開發 >Golang >Go 可以像 C# 的 `Debugger.IsAttached` 一樣偵測 GoLand 偵錯器配件嗎?

Go 可以像 C# 的 `Debugger.IsAttached` 一樣偵測 GoLand 偵錯器配件嗎?

Susan Sarandon
Susan Sarandon原創
2024-12-06 05:22:09936瀏覽

Can Go Detect GoLand Debugger Attachment Like C#'s `Debugger.IsAttached`?

偵測程式中的GoLand 偵錯器執行

在C# 中,正在執行的程式可以透過「System.Diagnostics.Debugger.IsAttached」方法辨識其是否處於調試器監督之下.

Go 可以實現類似的功能嗎?這對於在調試程式碼時禁用逾時特別有用。

具體來說,這個問題是在使用 GoLand 偵錯器的上下文中出現的。

解決方案

使用建置標籤:

  1. 建立兩個Go原始檔: 「isdelve/delve.go」和「isdelve/nodelve.go.」
  2. 在「isdelve/delve.go」中,加入以下建置標籤:

    // +build delve
  3. 在「isdelve/nodelve.go」中,加入以下建置標籤:

    // +build !delve
  4. 向兩個檔案新增「package isdelve」聲明並聲明「Enabled」常數:

    package isdelve
    
    const Enabled = true
    
    // or
    
    package isdelve
    
    const Enabled = false
  5. 建立第三個Go檔案“a.go”,它導入“isdelve” package:

    package main
    
    import (
        "isdelve"
        "fmt"
    )
    
    func main() {
        fmt.Println("delve", isdelve.Enabled)
    }

設定GoLand:

  1. 在GoLand 中開啟“運行/調試配置”視窗。
  2. 將「-tags=delve」加入「Go 工具參數」

用法:

  • 在GoLand 之外運行“go run a.go”時,程式會報告“delve false”。
  • 使用dlv 偵錯時,使用「dlv debug --build-flags='-tags=delve'走吧。」這將報告「delve true。」

替代方案:

或者,delve的“set”命令可以在啟動調試器後手動設定變數。

以上是Go 可以像 C# 的 `Debugger.IsAttached` 一樣偵測 GoLand 偵錯器配件嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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