Comment déboguer Golang Linux
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`
Ensuite, exécutez la commande suivante pour installer Dlv :
go get -u github.com/go-delve/delve/cmd/dlv
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
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
- -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
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 :
- 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
- 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
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: 从当前位置继续执行程序,直到下一个断点或程序完结
Par exemple, nous pouvons définir un point d'arrêt sur la ligne 10 du programme :
(b)reak main.go:10
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: 单步调试,如果当前位置是函数,则不进入该函数内部
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>: 显示变量
Par exemple, nous pouvons utiliser la commande suivante pour afficher les variables a et la variable b :
(p)rint a (p)rint b
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>: 修改变量的值
Par exemple, nous pouvons utiliser la commande suivante pour modifier la valeur de la variable a à 100 :
(s)et a = 100
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

OpenSSL, en tant que bibliothèque open source largement utilisée dans les communications sécurisées, fournit des algorithmes de chiffrement, des clés et des fonctions de gestion des certificats. Cependant, il existe des vulnérabilités de sécurité connues dans sa version historique, dont certaines sont extrêmement nocives. Cet article se concentrera sur les vulnérabilités et les mesures de réponse communes pour OpenSSL dans Debian Systems. DebianopenSSL CONNUTS Vulnérabilités: OpenSSL a connu plusieurs vulnérabilités graves, telles que: la vulnérabilité des saignements cardiaques (CVE-2014-0160): cette vulnérabilité affecte OpenSSL 1.0.1 à 1.0.1F et 1.0.2 à 1.0.2 Versions bêta. Un attaquant peut utiliser cette vulnérabilité à des informations sensibles en lecture non autorisées sur le serveur, y compris les clés de chiffrement, etc.

L'article explique comment utiliser l'outil PPROF pour analyser les performances GO, notamment l'activation du profilage, la collecte de données et l'identification des goulots d'étranglement communs comme le processeur et les problèmes de mémoire. COMMANDE: 159

L'article traite des tests d'unité d'écriture dans GO, couvrant les meilleures pratiques, des techniques de moquerie et des outils pour une gestion efficace des tests.

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

L'article discute de l'utilisation de tests basés sur la table dans GO, une méthode qui utilise un tableau des cas de test pour tester les fonctions avec plusieurs entrées et résultats. Il met en évidence des avantages comme une amélioration de la lisibilité, une duplication réduite, l'évolutivité, la cohérence et un

L'article discute de la gestion des dépendances des modules GO via Go.mod, couvrant les spécifications, les mises à jour et la résolution des conflits. Il met l'accent sur les meilleures pratiques telles que le versioning sémantique et les mises à jour régulières.

L'article traite du package de réflexion de Go, utilisé pour la manipulation d'exécution du code, bénéfique pour la sérialisation, la programmation générique, etc. Il met en garde contre les coûts de performance comme une exécution plus lente et une utilisation de la mémoire plus élevée, conseillant une utilisation judicieuse et la meilleure
