Maison >développement back-end >Golang >Comment puis-je détecter si le débogueur GoLand est exécuté dans mon programme Go ?

Comment puis-je détecter si le débogueur GoLand est exécuté dans mon programme Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-03 09:31:14495parcourir

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

Comment détecter l'exécution du débogueur GoLand dans un programme

Lors du débogage dans des langages gérés, on peut souhaiter désactiver certains comportements de synchronisation ou exécuter des chemins de code alternatifs. C# fournit System.Diagnostics.Debugger.IsAttached à cet effet. Mais comment faire cela dans Go ?

Une solution indirecte pour Go

Bien qu'il n'y ait pas d'équivalent direct à Debugger.IsAttached dans Go, vous pouvez détecter indirectement la présence du débogueur à l'aide de balises de build .

Étape 1 : Créer deux assistants Fichiers

  • isdelve/delve.go lorsque le débogage est activé :

    // +build delve
    
    package isdelve
    
    const Enabled = true
  • isdelve/nodelve.go lorsque le débogage ne l'est pas activé :

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

Étape 2 : Vérifiez la balise Build dans votre programme principal

import (
    "fmt"
    "isdelve"
)

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

Étape 3 : Configurez Goland

Dans la fenêtre « Configurations d'exécution/débogage » de GoLand, sous « Go arguments de l'outil", ajoutez :

-tags=delve

Lors du débogage avec Goland, Enabled sera défini sur true. Sinon, ce sera faux.

Étape 4 : Méthode alternative utilisant DLV

Si vous préférez utiliser dlv directement, utilisez :

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

Cela définira Activé sur vrai.

Étape 5 : Variable dynamique Paramètre

Vous pouvez également utiliser la commande dlv pour définir une variable manuellement après le démarrage du débogueur, comme suit :

> set enabled true

Cela définit une variable globale activée que vous pouvez vérifier dans votre code.

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