Heim >Backend-Entwicklung >Golang >Gibt es eine Möglichkeit, den GoLand-Debugger in Go-Programmen zu erkennen?

Gibt es eine Möglichkeit, den GoLand-Debugger in Go-Programmen zu erkennen?

Susan Sarandon
Susan SarandonOriginal
2024-11-29 07:52:10146Durchsuche

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

Delve-Debugger-Erkennung in Go-Programmen

In manchen Fällen kann es von Vorteil sein, festzustellen, ob ein Go-Programm unter dem GoLand-Debugger ausgeführt wird . In C# stellt die Eigenschaft System.Diagnostics.Debugger.IsAttached diese Funktionalität bereit.

Gibt es ein Äquivalent in Go?

Nein, es gibt derzeit keine integrierte Funktion Methode in Go, um das Vorhandensein des Debuggers wie in C# zu erkennen.

Problemumgehung mit Build Tags

Eine Problemumgehung ist jedoch mithilfe von Build-Tags möglich. Indem Sie ein Build-Tag festlegen, wenn der Delve-Debugger ausgeführt wird, können Sie prüfen, ob es in Ihrem Code vorhanden ist.

  1. Erstellen Sie zwei Dateien:

    • isdelve/delve .go (definiert das Tag, wenn Delve ausgeführt wird)
    • isdelve/nodelve.go (definiert das Tag, wenn Delve ausgeführt wird läuft nicht)
  2. Fügen Sie in a.go Folgendes hinzu:

    import (
        "isdelve"
        "fmt"
    )
    
    func main() {
        fmt.Println("delve", isdelve.Enabled)
    }
  3. Aktivieren Sie in GoLand das Build-Tag unter „Konfigurationen ausführen/debuggen“. ' durch Hinzufügen von -tags=delve in 'Go-Tool-Argumente:'.
  4. Jetzt können Sie überprüfen, ob der Delve-Debugger läuft:

    • Wenn go run a.go delve false meldet, wird es nicht ausgeführt.
    • Wenn dlv debug --build-flags='-tags=delve' a.go meldet delve true, es läuft.

Delve-Set wird verwendet Befehl

Alternativ bietet delve den Set-Befehl an, um eine Variable nach dem Start des Debuggers manuell zu setzen.

Das obige ist der detaillierte Inhalt vonGibt es eine Möglichkeit, den GoLand-Debugger in Go-Programmen zu erkennen?. 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