[LINUX] Premier gdb

Pour ceux qui déboguent le langage C dans un environnement Linux, nous expliquerons comment utiliser gdb. Pour les débutants.

Qu'est-ce que gdb

C'est un débogueur. Définissez des points d'arrêt, parcourez, Vous pouvez regarder à l'intérieur des variables, les réécrire, etc. Comme gcc, il est installé par défaut sous linux.

C'est un ancien outil qui fonctionne à partir de la ligne de commande. Ceci est utile pour le débogage dans un environnement où le débogueur IDE ne peut pas être utilisé.

mérite et démérite

mérite: ・ Peut être utilisé dans la plupart des environnements Linux -Peut être débogué en se connectant à un programme en cours d'exécution

Démérite: -Il n'y a pas d'écran GUI. Besoin de se souvenir des commandes

Comment utiliser 1: démarrer directement depuis gdb

① Compilez le fichier source de manière déboguable gcc -g3 test.c → a.out est généré

(2) Exécutez le fichier objet généré à partir de la commande gdb gdb a.out → Après cela, gdb vous demandera d'entrer une commande.

③ Définissez un point d'arrêt avant l'exécution b test.c: 256 # Break sur la ligne 256 de test.c b main # function main Mettre une pause au début

④ Exécution run

Utilisation 2: déboguer les programmes qui sont déjà en cours d'exécution

(1) Vérifiez l'ID de processus (PID) du programme que vous souhaitez déboguer ps -ef | grep a.out

② attacher gdb # Exécuter sans arguments attach 12345 (pid confirmé dans ↑)

Après cela, vous pouvez utiliser gdb pour mettre des points d'arrêt et regarder des variables. Si vous souhaitez modifier le processus, vous pouvez détacher puis attacher un autre processus.

Collection de commandes

Voici les principales commandes. Tous sont écrits sous forme abrégée. (ex. pause-> b)

・ Pause liée

commander effet
b func1 Mettre un point d'arrêt sur la fonction func1
b test.c:123 test.Mettre un point d'arrêt sur la ligne 123 de c
w var1 Définir le point de surveillance sur la variable var1
i b Afficher la liste des points d'arrêt
d no Supprimer les points d'arrêt correspondant aux nombres

・ Lié à l'exécution

commander effet
n Exécution par étapes(Courir ligne par ligne/Fonction saute)
s Exécution par étapes(Courir ligne par ligne/Entrez dans une fonction)
c Exécuter le traitement jusqu'au prochain point d'arrêt
f Exécuter le traitement jusqu'à quitter la fonction en cours
u Exécuter le traitement jusqu'à la sortie de la boucle en cours
ret -1 Renvoie la fonction actuelle-Quitter de force comme 1 * Le traitement ultérieur ne sera pas exécuté

·référence

commander effet
p var1 Voir la valeur de la variable var1
(S'il s'agit d'une structure, un.Vous pouvez faire référence aux variables membres avec b. Si c'est un pointeur*Vous pouvez voir le contenu avec fp etc. p strlen(buf)、p buf[3]、p a->Vous pouvez voir b etc. de manière assez flexible)
bt Trace arrière(Chemin pour appeler la fonction courante)Spectacle
l Afficher le code source
nom de macro de macro info Vérifier la définition de la macro
i lo Voir toutes les variables locales

・ Réécriture de la valeur

commander effet
p var1=-1 La valeur de la variable var1-Changer en 1

Autres conseils

Informations plus détaillées

http://flex.phys.tohoku.ac.jp/texi/gdb-j/gdb-j_toc.html http://sourceware.org/gdb/current/onlinedocs/gdb/

Recommended Posts

Premier gdb
Premier flacon
Premier essai
Essai GDB
Premier examen de python-
Premier Python
Premier hack de Windows 10
Premier Python 3 ~ Première comparaison ~
Premier défi Django
Premier plug-in de commande
Premier Python ~ Codage 2 ~
Premier classificateur d'images
Premier python [O'REILLY]
Premier développement Django
[IOS] Premier Pyto