[Embarqués] outils de développement Linux et gdb débogage à distance

gdb

GDB, débogueur GNU, appelé gdb (ddd), le programme est un outil interactif, le travail en mode caractère.

tâches de débogage GDB peut être accompli comme suit

  • Points d'arrêt;
  • Le suivi de la valeur des variables du programme;
  • exécution Single-step du programme;
  • Modifier la valeur d'une variable.

Installation gdb

privilèges Open utilisateur root: sudo -s, terminal Linux pour entrer le code suivant.

apt-get update
apt-get install gdb
Do you want to continue? [Y/n] y

Test d' usage:
écrire simple hello.c

#include<stdio.h>
int main(){
    printf("Hello World!\n");
}

Avant de pouvoir utiliser GDB, vous devez utiliser la -gpossibilité de compiler le fichier source.

  • les variables CFLAGS peuvent être définies comme le Makefile: CFLAGS = -g;
  • Ou lorsque vous utilisez compilateur gcc plus l'option -g gcc -g -o hello hello.c.

Courir utiliser normalement la commande gdb suivante débogueur:

gdb [文件名]

Par exemple, en utilisant gdb débogage bonjour, tout d'abord gcc -g -o hello hello.c, puisgdb hello
Insérer ici l'image Description

GDB commande de débogage

help NAME: Affiche des informations d'aide pour la commande spécifiée.
file FILE: Charger le fichier exécutable spécifié pour le débogage.
kill: Résilions le programme débogué.
list: Segments Affichage du code source.
break NUM: Définir un point d' arrêt sur une ligne spécifiée.
run: L' exécution du programme en cours de débogage.
continue: Poursuivre le programme en cours de débogage.
step: Exécution d' une ligne d' attaque de code source, dans les conditions rencontrées dans les fonctions des fonctions d'exécution internes.
stepi: Exécuter une instruction de machine.
next: Exécution une seule étape d'une phrase, pas entrer dans le corps de la fonction.
nexti: Exécution une seule étape d'une instruction, si l'instruction est un appel de fonction, puis arrêter jusqu'à ce que la fonction est appelée lorsque la fin de l' exécution du programme.
set 变量 = 表达式Ou set 变量 := 表达式: définir la valeur des variables.
display EXPRChaque fois que le programme affiche la valeur de l'expression est arrêté, le programme défini par l'expression composition variable.
print 变量或表达式: La valeur de la variable ou l' expression écrite.

info break: Affiche la liste des points d'arrêt en cours, y compris le nombre de fois pour atteindre le point d' arrêt et ainsi de suite.
info files: Affiche le fichier des informations de débogage détaillées.
info func: Affiche tous les noms de fonction.
info local: Lorsque les informations d'affichage dans les variables locales.
info prog: Afficher l'être du programme débogué état d'exécution.
info var: Afficher tous les noms de variables globales et statiques.

delete 断点号: Points d' arrêt clairs ou des expressions d'affichage automatique.
disable 断点号列表(断点号之间用空格间隔开): Que la défaillance du point d' arrêt spécifié.
enable 断点号列表Et disablecontrairement à l' échec de rétablir les points d' arrêt.
ignore 断点号 忽略次数: Ignorer les points d' arrêt.
quit: Quittez gdb.

GDB étapes de débogage

La première étape: avec le -gcompilateur l' option arm-linux -g -o hello hello.c
Deuxième étape: programme gdb gdb hello
Etape 3: Vérifiez la source list
Quatrième étape: Définir un point d' arrêt à la fonction principale break main
Cinquième étape: Exécuter run
Sixième étape: Debug step/next/break/cont/print/display
Septième étape: quitquit
Insérer ici l'image Description

Debugging Embedded Remote

Insérer ici l'image Description

Dans le conseil de développement en cours d'exécution gdbserver

Insérer ici l'image Description

Exécuté sur le côté PC

ddd -debugger ./arm-linux-gdb greeting
Insérer ici l'image Description
Insérer ici l'image Description

Autres outils de développement Liunx

désassembleur CROSS bras-linux-objdump

arm-linux-objdump -D -S hello > out.s: Sortie désassemblé fichier à out.s
Insérer ici l'image Description

Voir outil de fichier de bras-linux-readelf

arm -linux-readelf -a hello: Voir le fichier exécutable bonjour.
Insérer ici l'image Description
arm-linux-readelf -d hello: Afficher les fichiers exécutables nécessaires bibliothèques partagées
Insérer ici l'image Description

kits de développement graphique: CODE :: BLOCS

Insérer ici l'image Description

Travail à domicile

(1) en supposant un capteur de température dans le fichier TempSensor.c prise algorithme de tri à bulles pour trier une température de 10, correspondant au nom de la fonction BubbleFun(), et puis en éliminant les plus hautes et les plus basses valeurs, la température des huit valeurs restantes ont été somme moyenne la température mesurée à l' information de la compilation de mise au point est souhaitable d'ajouter, il est nécessaire d'ajouter (option de compilation lorsque -g ), dans le processus de débogage, il est nécessaire d'arrêter et de lancer le programme en cours d' exécution dans l' BubbleFun()entrée à une fonction, la séquence instruction courant d'écriture gDB débogueur .

gcc -g -o TempSensor TempSensor.c
gdb TempSensor
list
break BubbleFun
run

(2) CODE :: BLOCS est un ( kit de développement graphique ), sous - jacente ( nécessaire ) Support de bras-linux-gcc le kit de développement.

Publié 170 articles originaux · louange gagné 47 · vues 20000 +

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43734095/article/details/105092992
conseillé
Classement