Construction et utilisation de l'environnement de débogage gdb + gdbserver intégré

table des matières

1. Principe

Deux, la construction de l'environnement

Troisièmement, le processus de débogage

Quatre, commandes gdb couramment utilisées

1. Commande l (liste)

2. Commande b (break)

3. La commande c

4. commande s

5. commande n

6, commande p

7, commande q


1. Principe

Les systèmes embarqués exécutent généralement l'outil gdb côté PC, et le code source est également côté PC.Le fichier exécutable correspondant au code source est placé sur la carte de développement pour être exécuté. Pour cela, nous devons exécuter gdbserver sur la carte de développement et communiquer avec gdb côté PC via le réseau. Par conséquent, si vous voulez déboguer un programme intégré via gdb sur un PC, vous avez besoin de deux choses: gdb et gdbserver, où gdb s'exécute sur le PC, et gdbserver a besoin que nous soyons transplantés sur la carte de développement.

Deux, la construction de l'environnement

Généralement, la compilation croisée est déjà fournie avec gdb et gdbserver, vous pouvez utiliser le compilateur croisé intégré directement sans portage, copier gdbserver directement dans le répertoire / usr / bin du système de fichiers racine et utiliser le service nfs après le démarrage de la carte de développement. Le système de fichiers sous ubuntu ; si le compilateur croisé ne l'accompagne pas, vous devez télécharger le code source pour l'installer

1. Le compilateur croisé est livré avec

installation Manuel:

Copiez gdbserver dans le système de fichiers racine rootfs / usr / bin :

sudo cp /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/gdbserver /home/denghengli/linux/nfs/rootfs/usr/bin/

2. Étapes de téléchargement et d'installation du code source

légèrement. . .

Troisièmement, le processus de débogage

1. Compilez le code source dans un fichier exécutable avec des informations de débogage, puis copiez-le sur la carte de développement. Par exemple, un fichier gdbtest.c est écrit sous ubuntu et le fichier exécutable gdbtest sera envoyé à la carte de développement une fois la compilation terminée

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
	unsigned int times = 0;

	while (1)
	{
		printf("runging times: %d \r\n", times);
		times++;
		sleep(1);
	}
}

Compiler:

arm-linux-gnueabihf-gcc gdbtest.c -o gdbtest -g //编译测试程序,注意 -g选项

Copier dans le système de fichiers racine rootfs (après le démarrage de la carte de développement, utilisez le système de fichiers racine sous ubuntu via le service nfs):

sudo cp gdbtest /home/denghengli/linux/nfs/rootfs/lib/modules/4.1.15/

2. Dans la carte de développement, démarrez gdbserver et exécutez le fichier exécutable à déboguer

gdbserver 192.168.0.107:2000 gdbtest //启动开发板上的 gdbserver

192.168.0.107 est l'adresse IP de l'hôte ubuntu désignée

2000 est le port à ouvrir pour le débogage, qui peut être spécifié à volonté

gdbtest est un fichier exécutable pour le débogage, assurez-vous donc d'apporter le chemin de gdbtest! !

3. Ouvrez gdb dans ubuntu et connectez-vous à gdbserver sur la carte de développement

arm-linux-gnueabihf-gdb gdbtest //启动gdb调试
target remote 192.168.0.20:2000 //连接到开发板,192.168.0.20为开发板ip

Une fois la connexion réussie, il demandera le débogage à distance à l'aide de 192.168.0.20:2000

4. Déboguer via des commandes de débogage

Définissez le point d'arrêt sur la ligne 12, entrez c pour exécuter jusqu'au point d'arrêt, et le programme s'exécutera sur la carte de développement et imprimera les informations sur la console

Entrez p pour imprimer les informations de temps, et enfin entrez q pour quitter le débogage, et le gdbserver sur la carte de développement s'arrêtera également.

Quatre, commandes gdb couramment utilisées

1. Commande l (liste)

Répertoriez tous les codes source du programme; après la commande, tous les codes source du programme de débogage sont imprimés. Si le code source n'est pas imprimé, appuyez plusieurs fois sur la commande «l» ou appuyez sur la touche Entrée dans l'outil de débogage gdb pour répéter le précédent commander!

2. Commande b (break)

Utilisé pour définir un point d'arrêt, suivi d'une fonction ou d'un numéro de ligne spécifique

3. La commande c

Utilisé pour courir jusqu'au point d'arrêt

4. commande s

La commande s (étape) est exécutée en une seule étape, et cette fonction entrera dans la fonction.

5. commande n

La commande n (suivant) est également une opération en une seule étape, mais la commande n n'entrera pas dans la fonction.

6, commande p

La commande p (impression) est utilisée pour imprimer la valeur d'une variable.

7, commande q

La commande q (quit) est utilisée pour quitter le débogage, et le gdbserver sur la carte de développement s'arrêtera également.

 

Je suppose que tu aimes

Origine blog.csdn.net/m0_37845735/article/details/107031218
conseillé
Classement