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 -g
possibilité 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
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 EXPR
Chaque 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 disable
contrairement à 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 -g
compilateur 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
Debugging Embedded Remote
Dans le conseil de développement en cours d'exécution gdbserver
Exécuté sur le côté PC
ddd -debugger ./arm-linux-gdb greeting
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
Voir outil de fichier de bras-linux-readelf
arm -linux-readelf -a hello
: Voir le fichier exécutable bonjour.
arm-linux-readelf -d hello
: Afficher les fichiers exécutables nécessaires bibliothèques partagées
kits de développement graphique: CODE :: BLOCS
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.