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

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

Susan Sarandon
發布: 2024-12-06 05:22:09
原創
899 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板