Maison >développement back-end >C++ >Compétences de débogage à distance OKMX-C GDB

Compétences de débogage à distance OKMX-C GDB

DDD
DDDoriginal
2024-12-01 22:18:10277parcourir

OKMX-C GDB Remote Debugging Skills

Dans le domaine du développement embarqué, le débogage est une étape critique pour assurer le fonctionnement stable d'un programme. Pour les développeurs utilisant la carte de développement OKMX8MP-C, la maîtrise des techniques de débogage à distance GDB peut améliorer considérablement l'efficacité du développement. GDB, abréviation de The GNU Project Debugger, est un outil de débogage complet sous Linux. GDB prend en charge diverses méthodes de débogage, notamment la définition de points d'arrêt, l'exécution en une seule étape, l'impression de variables, l'observation de variables, l'examen de registres et l'affichage de la pile d'appels.

Dans le développement de logiciels sous environnement Linux, GDB est le principal outil de débogage utilisé pour déboguer les programmes C et C. La version 5.4.70 d'OKMX8MP-C est livrée avec la prise en charge par défaut de gdbserver, et notre environnement de développement fourni prend également en charge gdb par défaut. Ensuite, nous détaillerons comment effectuer le débogage à distance GDB sur l'OKMX8MP-C.

  1. Préparation avant compilation Avant d'effectuer le débogage GDB, il est essentiel de s'assurer que l'application a été correctement compilée et inclut les informations de débogage. Ceci peut être réalisé en ajoutant l'option -g lors de la compilation. Par exemple :

forlinx@ubuntu :~$ $CC -g test_bug.c -o test_bug

Cette commande compilera le fichier source test_bug.c et générera un fichier exécutable test_bug avec les informations de débogage incluses. De cette façon, GDB peut localiser avec précision les positions correspondantes dans le code source lors des processus de débogage ultérieurs.

Après la compilation, le fichier exécutable généré doit être copié sur la carte de développement. Ceci est généralement réalisé via le port série, le réseau ou d'autres méthodes de transfert de fichiers. Dans cet exemple, nous supposons que le fichier test_bug a été copié dans le répertoire / de la carte de développement.

  1. IP de la carte de développement et paramètres de démarrage de gdbserver Ensuite, vous devez définir l'adresse IP sur la carte de développement et démarrer le service gdbserver. Les étapes spécifiques sont les suivantes :

Définissez l'adresse IP :

Utilisez la commande ifconfig pour définir l'adresse IP de la carte de développement. Par exemple :

ifconfig eth0 172.16.0.109

Ici, l'adresse IP de la carte de développement est définie sur 172.16.0.109

Démarrez gdbserver sur la carte de développement, en spécifiant le numéro du port d'écoute et le programme à déboguer. Par exemple :

gdbserver 172.16.0.109:2345 /test_bug

Cette commande démarrera gdbserver et écoutera sur le port 2345 les demandes de connexion du client GDB.

root@OK8MP:~# ifconfig eth0 172.16.0.109
root@OK8MP :~# gdbserver 172.16.0.109:2345 test_bug
Processus /home/root/test_bug créé ; pid = 1356
En écoute sur le port 2345
Sur la machine virtuelle ou l'hôte, définissez une adresse IP dans le même segment de réseau que la carte de développement et utilisez la commande ping pour tester la connectivité avec la carte de développement.

Assurez-vous du succès du ping de l'adresse IP de la carte de développement, condition préalable au débogage à distance.

  1. Démarrage du client GDB et connexion à la carte de développement Démarrez le client GDB :

Sur la machine virtuelle ou l'hôte, utilisez la commande aarch64-poky-linux-gdb pour démarrer le client GDB et spécifiez le programme à déboguer. Par exemple :

forlinx@ubuntu :~/ aarch64-poky-linux-gdb test_bug
GNU gdb (GDB) 8.3.1
Copyright (C) 2019 Free Software Foundation, Inc.
Licence GPLv3 : GNU GPL version 3 ou ultérieure http://gnu.org/licenses/gpl.html
Il s'agit d'un logiciel gratuit : vous êtes libre de le modifier et de le redistribuer.
Il n'y a AUCUNE GARANTIE, dans la mesure permise par la loi.
Tapez « afficher la copie » et « afficher la garantie » pour plus de détails. Ce GDB a été configuré comme "--host=x86_64-pokysdk-linux --target=aarch64-poky-linux".
Tapez « afficher la configuration » pour les détails de configuration.
Pour les instructions de signalement de bugs, veuillez consulter :
http://www.gnu.org/software/gdb/bugs/
Retrouvez le manuel GDB et d'autres ressources de documentation en ligne sur :
http://www.gnu.org/software/gdb/documentation/
Pour obtenir de l'aide, tapez "aide".
Tapez « à propos de mot » pour rechercher les commandes liées à « mot »...
Lecture des symboles de test_bug...
(gdb)
Connectez-vous au tableau :

Dans le client GDB, utilisez la commande target remote pour vous connecter au gdbserver sur la carte. Par exemple :

(gdb) cible distante 172.16.0.109:2345
Débogage à distance en utilisant 172.16.0.109:2345
Lecture de /lib/ld-linux-aarch64.so.1 à partir d'une cible distante...
avertissement : les transferts de fichiers depuis des cibles distantes peuvent être lents. Utilisez plutôt "set sysroot" pour accéder aux fichiers localement.
Lecture de /lib/ld-linux-aarch64.so.1 à partir d'une cible distante...
Lecture des symboles depuis target:/lib/ld-linux-aarch64.so.1...
Lecture de /lib/ld-2.30.so depuis une cible distante...
Lecture de /lib/.debug/ld-2.30.so à partir d'une cible distante...
Lecture de /lib/.debug/ld-2.30.so à partir d'une cible distante...
Lecture des symboles depuis la cible :/lib/.debug/ld-2.30.so...
0x0000fffff7fcf080 dans _start () depuis target:/lib/ld-linux-aarch64.so.1
(gdb)
À ce stade, le client GDB se connecte au gdbserver sur la carte et est prêt à commencer le débogage à distance.

  1. Débogage à distance Une fois la connexion réussie, vous pouvez commencer à utiliser diverses commandes de débogage GDB pour le débogage à distance. Vous trouverez ci-dessous quelques commandes de débogage couramment utilisées :

l (liste) : Répertorie le code source.

b (break) : définit un point d'arrêt.

n (suivant) : parcourt le code ligne par ligne.

s (étape) : pas à pas dans les fonctions pour une exécution ligne par ligne.

c (continuer) : continue l'exécution du programme.

p (print) : Imprime la valeur d'une variable.

Par exemple, utilisez la commande l pour afficher le code source à l'emplacement actuel :

(gdb)l
12>
13
14 vide A(int *p)
15 {
16B(p);
17>
18
19 vide A2(int *p)
20 {
21C(p);
(gdb)

Ensuite, vous pouvez utiliser la commande B pour définir un point d'arrêt sur une ligne, comme la ligne 16 :

code de copie bash

(gdb)b 16

Point d'arrêt 1 à 0x... : fichier test_bug.c, ligne 16.

Utilisez la commande c pour continuer l'exécution du programme. Le programme s'arrêtera au point d'arrêt, en attendant un débogage ultérieur.

  1. Techniques de débogage et précautions Gestion des points d'arrêt : la définition appropriée des points d'arrêt peut améliorer considérablement l'efficacité du débogage. Utilisez la commande d pour supprimer les points d'arrêt. Utilisez la commande info b pour afficher tous les points d'arrêt actuels.

Surveillance des variables : utilisez la commande watch pour surveiller les changements de variables. GDB suspendra automatiquement l'exécution lorsque la valeur de la variable change.

Débogage multithread : si le programme est multithread, utilisez la commande thread pour changer de thread pour le débogage.

Considérations relatives à la sécurité : garantir la sécurité de l'environnement réseau est crucial lors du débogage à distance. Utilisez des tunnels SSH ou d'autres méthodes de cryptage pour protéger la transmission des données de débogage.

Ce sont toutes les compétences de débogage à distance OKMX8MP-C GDB. Cet outil puissant permet une résolution efficace des problèmes et une amélioration du développement.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn