Maison >développement back-end >Golang >Go peut-il détecter la pièce jointe du débogueur GoLand comme « Debugger.IsAttached » de C# ?

Go peut-il détecter la pièce jointe du débogueur GoLand comme « Debugger.IsAttached » de C# ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-06 05:22:09901parcourir

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

Détection de l'exécution du débogueur GoLand dans un programme

En C#, un programme en cours d'exécution peut identifier s'il est sous la supervision du débogueur via la méthode "System.Diagnostics.Debugger.IsAttached". .

Go peut-il atteindre une fonctionnalité similaire ? Ceci est particulièrement souhaitable pour désactiver les délais d'attente pendant le débogage du code.

Plus précisément, cette question se pose dans le contexte de l'utilisation du débogueur GoLand.

Solution

Utilisation Balises de construction :

  1. Créez deux fichiers sources Go : "isdelve/delve.go" et "isdelve/nodelve.go."
  2. Dans "isdelve/delve.go", ajoutez la balise de build suivante :

    // +build delve
  3. Dans "isdelve/nodelve.go", ajoutez la version suivante tag :

    // +build !delve
  4. Ajoutez une déclaration "package isdelve" aux deux fichiers et déclarez la constante "Enabled" :

    package isdelve
    
    const Enabled = true
    
    // or
    
    package isdelve
    
    const Enabled = false
  5. Créez un troisième fichier Go, "a.go", qui importe le "isdelve" package :

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

Configuration de GoLand :

  1. Ouvrez la fenêtre « Exécuter/déboguer les configurations » dans GoLand.
  2. Ajoutez "-tags=delve" aux "arguments de l'outil Go"

Utilisation :

  • Lors de l'exécution de "go run a.go" en dehors de GoLand, le programme signalera "delve false".
  • Lorsque vous utilisez dlv pour déboguer, utilisez "dlv debug --build-flags='-tags=delve' a.go." Cela signalera "delve true".

Alternative :

Alternativement, la commande "set" de Delve peut définir manuellement une variable après le démarrage du débogueur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn