Maison > développement back-end > Golang > le corps du texte

Comment déboguer Golang Linux

PHPz
Libérer: 2023-05-14 15:25:38
original
914 Les gens l'ont consulté

Le langage Go est un langage de programmation de haut niveau publié pour un développement plus pratique et plus rapide. Il peut non seulement fonctionner sur plusieurs systèmes d'exploitation tels que Windows, MacOS et Linux, mais fournit également de puissants outils de débogage pour aider le développement à résoudre les problèmes. Cet article explique comment déboguer les programmes en langage Go sur les systèmes Linux.

Outils de débogage

Le langage Go fournit un débogueur intégré - go debug, mais la haute efficacité de Go apporte également de nombreux défis de débogage. Dlv (https://github.com/go-delve/delve) est un débogueur moderne pour le langage Go qui prend en charge les fonctionnalités de débogage spécifiques à Go. Dlv fournit des fonctions de débogage courantes telles que le traçage en une seule étape, l'affichage des variables, la modification des variables et les points d'arrêt. De plus, GDB prend également en charge le débogage du langage Go, mais il ne peut pas comprendre le planificateur du langage Go, il est donc plus adapté au développement du noyau ou au débogage de programmes qui n'ont besoin que de quelques fonctions spécifiques à Go.

Installation de Dlv

Dlv est écrit en langage Go, son installation nécessite donc d'abord d'installer le langage Go lui-même. Vous pouvez télécharger la dernière version du package d'installation du langage Go sur le site officiel (https://golang.org/dl/) et le configurer dans les variables d'environnement.

Après avoir installé le langage Go, nous devons d'abord installer la bibliothèque dont dépend Dlv - des utilitaires Linux liés dynamiquement :

sudo apt-get update
sudo apt-get install linux-tools-common linux-tools-generic linux-tools-`uname -r`
Copier après la connexion

Ensuite, exécutez la commande suivante pour installer Dlv :

go get -u github.com/go-delve/delve/cmd/dlv
Copier après la connexion

La commande ci-dessus installera Dlv dans le $GOPATH /bin. Vous pouvez l'ajouter manuellement à la variable PATH, ou vous pouvez l'ajouter au PATH avec la commande suivante :

echo "export PATH=$PATH:$(go env GOPATH)/bin" >> ~/.bashrc
source ~/.bashrc
Copier après la connexion

Compilez et déboguer le programme

Nous devons aller dans le répertoire où se trouve le programme, utilisez go build pour compiler le programme et générer le fichier binaire. En supposant que notre programme s'appelle debug-demo, nous pouvons le compiler avec la commande suivante :

go build -gcflags "-N -l" -o debug-demo
Copier après la connexion
  • -gcflags "-N -l": Ajoutez un indicateur de compilation pour garantir que le compilateur n'optimisera pas le code, facilitant ainsi le débogage. .
  • -o debug-demo : Nommez le fichier exécutable généré debug-demo.

Afin de résoudre le problème de l'assemblage du code source, nous pouvons également utiliser la commande go env pour obtenir la valeur de CGO_ENABLED, la définir sur 0, puis compiler à nouveau :

go env
go build -gcflags "-N -l" -o debug-demo -tags netgo -ldflags '-w -extldflags "-static"' -v main.go
Copier après la connexion

Définir les points d'arrêt

Définir les points d'arrêt dans le programme est l'opération la plus couramment utilisée lors du débogage. Nous pouvons définir un point d'arrêt n'importe où dans le code pour attendre que l'exécution du programme atteigne cet emplacement.

En utilisant Dlv, vous pouvez définir des points d'arrêt des deux manières suivantes :

  1. Interface graphique (recommandée)

L'utilisation de l'interface graphique de Dlv peut faire fonctionner et modifier le programme de manière plus intuitive. Exécutez la commande suivante, puis l'interface graphique s'ouvrira automatiquement :

dlv debug ./debug-demo
Copier après la connexion
  1. Ligne de commande

Exécutez la commande suivante pour accéder au mode ligne de commande Dlv :

dlv debug ./debug-demo --headless --listen=:2345 --api-version=2
Copier après la connexion

Après avoir entré Dlv, nous pouvons utiliser le break (ou l'abrégé comme b) commande pour définir un point d'arrêt :

(b)reak {<location>|<function>|<filename>:<line>|<remote package path>}: 设置断点
(b)reakpoints: 显示当前所有的断点
(d)elete {<breakpoint#>|<breakpoint.id>}: 删除断点#或通过Breakpoint.id删除指定断点
(c)ontinue: 从当前位置继续执行程序,直到下一个断点或程序完结
Copier après la connexion

Par exemple, nous pouvons définir un point d'arrêt sur la ligne 10 du programme :

(b)reak main.go:10
Copier après la connexion

Contrôler l'exécution du programme

Pendant l'exécution du programme, vous pouvez utiliser l'étape ( ou abrégé en s) et commandes suivantes (ou abrégées en n) Programme de contrôle en cours d'exécution :

(s)tep: 单步调试,如果当前位置是函数,则进入该函数内部
(n)ext: 单步调试,如果当前位置是函数,则不进入该函数内部
Copier après la connexion

Afficher les variables

Dlv fournit également des commandes pour afficher les variables. Utilisez la commande print (ou abrégé p) pour afficher les variables dans la portée actuelle :

(p)rint <variable>: 显示变量
Copier après la connexion

Par exemple, nous pouvons utiliser la commande suivante pour afficher les variables a et la variable b :

(p)rint a
(p)rint b
Copier après la connexion

Modifier les variables

En plus d'afficher les variables, Dlv prend également en charge la modification de la valeur des variables. Utilisez la commande set pour modifier la valeur. de variables :

(s)et <variable> = <value>: 修改变量的值
Copier après la connexion

Par exemple, nous pouvons utiliser la commande suivante pour modifier la valeur de la variable a à 100 :

(s)et a = 100
Copier après la connexion

Résumé

Cet article présente comment utiliser Dlv pour déboguer les programmes Go sur les systèmes Linux. Tout d'abord, nous avons installé le langage Go et le débogueur Dlv, puis utilisé go build pour compiler le programme et définir des points d'arrêt dans le programme, utiliser l'interface graphique ou la ligne de commande de Dlv pour contrôler l'exécution du programme, et afficher et modifier les valeurs des variables pour résoudre les problèmes Go rencontrés lors du débogage du programme. J'espère que grâce à cet article, les lecteurs pourront maîtriser les compétences de base nécessaires à l'utilisation de Dlv pour déboguer les programmes Go sous les systèmes Linux.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!