Maison >développement back-end >Golang >Existe-t-il un moyen de détecter le débogueur GoLand dans les programmes Go ?

Existe-t-il un moyen de détecter le débogueur GoLand dans les programmes Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-29 07:52:10212parcourir

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

Détection du débogueur Delve dans les programmes Go

Dans certains cas, il peut être avantageux de déterminer si un programme Go s'exécute sous le débogueur GoLand . En C#, la propriété System.Diagnostics.Debugger.IsAttached fournit cette fonctionnalité.

Y a-t-il un équivalent dans Go ?

Non, il n'y a actuellement aucun élément intégré méthode dans Go pour détecter la présence du débogueur comme en C#.

Solution de contournement à l'aide de Build Balises

Cependant, une solution de contournement est possible en utilisant les balises de build. En définissant une balise de build lorsque le débogueur Delve est en cours d'exécution, vous pouvez vérifier sa présence dans votre code.

  1. Créez deux fichiers :

    • isdelve/delve .go (définit la balise lorsque Delve est en cours d'exécution)
    • isdelve/nodelve.go (définit la balise lors de l'exécution de Delve n'est pas en cours d'exécution)
  2. Dans a.go, ajoutez :

    import (
        "isdelve"
        "fmt"
    )
    
    func main() {
        fmt.Println("delve", isdelve.Enabled)
    }
  3. Dans GoLand, activez la balise de build sous « Exécuter/Déboguer Configurations' en ajoutant -tags=delve dans 'Arguments de l'outil Go :'.
  4. Maintenant, vous pouvez vérifier si le le débogueur Delve est en cours d'exécution :

    • Si go run a.go rapporte que Delve est faux, il ne fonctionne pas.
    • Si dlv debug --build-flags='-tags=delve' a Les rapports .go sont vrais, c'est vrai en cours d'exécution.

À l'aide de la commande set de Delve

Comme alternative, Delve propose la commande set pour 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