Maison  >  Article  >  développement back-end  >  Comment puis-je déboguer les extensions Protobuf en conflit dans les tests unitaires Go à l'aide de VS Code ?

Comment puis-je déboguer les extensions Protobuf en conflit dans les tests unitaires Go à l'aide de VS Code ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-27 06:52:29825parcourir

How can I debug conflicting Protobuf extensions in Go unit tests using VS Code?

Exécuter et déboguer des tests unitaires avec des indicateurs : gérer les extensions Protobuf en conflit

Lors du débogage des tests unitaires dans VS Code, il peut être nécessaire de réussir indicateurs supplémentaires pour tenir compte des extensions Protobuf en conflit. Ce guide fournit une solution à ce problème, permettant un débogage transparent.

La configuration d'origine dans VS Code settings.json tente d'ajouter l'indicateur requis '-ldflags "-X google.golang.org/protobuf/reflect /protoregistry.conflictPolicy=warn"'. Cependant, cette configuration est confrontée à un problème lorsque VS Code génère une commande de test avec des guillemets simples autour du drapeau.

Pour résoudre ce problème, un ajustement de la configuration dans settings.json est requis. La modification doit supprimer les guillemets simples autour de la valeur de l'indicateur :

"go.testFlags": [
    "-ldflags",
    "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"
]

Avec cette modification, VS Code générera une commande de test qui inclut correctement l'indicateur nécessaire sans provoquer l'erreur associée aux conflits d'extension de proto.

Pour le débogage, une approche différente est recommandée en raison de la complexité du débogage de tests spécifiques à l'aide de l'interface VS Code. La compilation du binaire de test avec des indicateurs spécifiques et l'utilisation de DLV pour le débogage sans tête permettent un meilleur contrôle et un débogage efficace.

Pour compiler le binaire de test :

go test -c -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" -gcflags="all=-N -l"

Cette commande génère un binaire avec les éléments requis drapeaux pour le débogage. Pour connecter dlv en mode sans tête pour la connexion à l'éditeur :

dlv exec ./foo.test --headless --listen=:2345 --log --api-version=2 -- -count=1 -- $(pwd)/some/path

Ici, foo.test est le binaire généré, -count=1 représente des indicateurs personnalisés pour les tests, et $(pwd)/some/path peut être utilisé pour les tests de type concombre. Connectez votre éditeur à la session dlv et démarrez le débogage.

Informations supplémentaires

Go fournit également des méthodes pratiques pour lancer dlv via des indicateurs en ligne, et pour les utilisateurs de Vim, le vim Le plugin -go permet un paramètre de point d'arrêt personnalisé et une connexion DLV à l'aide de commandes telles que :GoDebugConnect 127.0.0.1:2345. En suivant les étapes décrites ci-dessus, les développeurs peuvent exécuter et déboguer efficacement des tests unitaires avec des indicateurs, garantissant ainsi des tests fluides et une maintenance du 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