Heim >Backend-Entwicklung >Golang >Wie kann ich erkennen, ob der GoLand-Debugger in meinem Go-Programm ausgeführt wird?

Wie kann ich erkennen, ob der GoLand-Debugger in meinem Go-Programm ausgeführt wird?

Barbara Streisand
Barbara StreisandOriginal
2024-12-03 09:31:14490Durchsuche

How Can I Detect if the GoLand Debugger is Running in My Go Program?

So erkennen Sie, dass GoLand Debugger in einem Programm ausgeführt wird

Beim Debuggen in verwalteten Sprachen möchte man möglicherweise bestimmte Zeitverhaltensweisen deaktivieren oder alternative Codepfade ausführen. C# stellt zu diesem Zweck System.Diagnostics.Debugger.IsAttached bereit. Aber wie machen wir das in Go?

Eine indirekte Lösung für Go

Obwohl es in Go kein direktes Äquivalent zu Debugger.IsAttached gibt, können Sie das Vorhandensein des Debuggers mithilfe von Build-Tags indirekt erkennen .

Schritt 1: Erstellen Sie zwei Helfer Dateien

  • isdelve/delve.go, wenn das Debuggen aktiviert ist:

    // +build delve
    
    package isdelve
    
    const Enabled = true
  • isdelve/nodelve.go, wenn das Debuggen nicht aktiviert ist aktiviert:

    // +build !delve
    
    package isdelve
    
    const Enabled = false

Schritt 2: Suchen Sie in Ihrem Hauptprogramm nach dem Build-Tag

import (
    "fmt"
    "isdelve"
)

func main() {
    fmt.Println("Debugging:", isdelve.Enabled)
}

Schritt 3: Goland konfigurieren

Im GoLand-Fenster „Konfigurationen ausführen/debuggen“ unter „ Go-Tool-Argumente“ hinzufügen:

-tags=delve

Beim Debuggen mit Goland wird „Enabled“ auf „true“ gesetzt. Andernfalls ist es falsch.

Schritt 4: Alternative Methode mit DLV

Wenn Sie dlv lieber direkt verwenden möchten, verwenden Sie:

dlv debug --build-flags='-tags=delve' a.go

Dadurch wird „Enabled“ auf „true“ gesetzt.

Schritt 5: Dynamische Variable Einstellung

Alternativ können Sie den Befehl dlv verwenden, um eine Variable manuell nach dem Start des Debuggers wie folgt festzulegen:

> set enabled true

Dadurch wird eine global aktivierte Variable festgelegt, die Sie überprüfen können in Ihrem Code.

Das obige ist der detaillierte Inhalt vonWie kann ich erkennen, ob der GoLand-Debugger in meinem Go-Programm ausgeführt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn