Après avoir réalisé une chaîne de compilation en C pour le Rasberry Pi sous ArchLinux il y a deux semaines, je vous invite à explorer la cross-compilation C++ sous Debian avec un IDE dédié. Cela me permettra de créer et compiler des programmes directement sur le Raspberry Pi.
On verra également comment on peut déboguer le programme à distance sur le Raspberry Pi. Nous aurons ainsi un environnement de développement dédié à la configuration et à la création de programme sur notre système embarqué 🙂
Cette troisième et dernière partie concernera le débogage du programme embarqué grâce à Eclipse !
Table des matières
Prérequis
Toutes les étapes précédent ce tuto ont été effectués dans les deux premières parties du tuto :
– Réaliser son environnement de développement C++ pour Raspberry Pi [PARTIE 1/3]
– Réaliser son environnement de développement C++ pour Raspberry Pi [PARTIE 2/3]
6. Débuguer son programme directement sur cible
Pour débuguer un programme à distance à partir d’un IDE nous avons besoin d’un client/serveur de débogage. Pour se faire, on doit installer gdbserver sur le Raspberry Pi.
sudo apt-get install gdbserver
Ensuite, sur le PC de développement, on installe le client multi-architecture :
sudo apt-get install gdb-multiarch
Ensuite, on crée dans le workspace d’Eclipse le fichier .gdbinit (nano .gdbinit) qui contient :
set architecture arm
On retourne sur Eclipse, dans « Debug Configurations » et on supprime la configuration TestRPi locale. On en crée une nouvelle dans « C/C++ Remote Application ».
On spécifie bien la connexion avec le Raspberry Pi :
La connexion s’effectue avec une clé ssh (tu sais, celle qu’on a installé t’al’heure ?)
On n’oublie pas de rajouter l’emplacement du programme sur la cible : pour ma part se sera /home/pi/TestRPi_1.
Comme debugger, on utilisera gdb-multiarch, et non gdb. On remplit donc les champs « GDB debugger » et « GDB command file » avec :
/usr/bin/gdb-multiarch
/home/nom_utilisateur/workspace/.gdbinit
On applique et on lance le Debug :
Bon, c’est bien beau, mais sans variable, il n’y a pas grand-chose à voir… Je modifie un peu le programme en ajoutant une variable « x » que j’incrémente.
Je n’oublie pas d’enregistrer et je lance le Debug grâce à l’icône en forme de puce.
Grâce au pas à pas (F6), on voit la variable x s’initialiser à 0, puis s’égaliser à 26, puis s’incrémenter à 27. Le tout en Debug à distance sur la cible.
A la fin du programme, le débuggeur d’Eclipse nous lâche des erreurs, car Eclipse ne comprends pas la terminaison du programme cible. Le débuggeur a besoin des librairies linux-arm-gnueabihf pour comprendre cela.
Pour se faire, on se rends dans Debug Configurations => C/C++ Remote Application => Nom_du_Programme => Debugger => Shared Librairies. Et on ajoute nos librairies /usr/lib/arm-linux-gnueabihf.
On enregistre et on relance le Debug…
Conclusion
Et voilà la fin de cet article, qui est à ce jour, le premier article entièrement en français expliquant comment compiler des programmes en C++ directement sur le Raspberry Pi à travers un réseau local ! : -)
Une fois le projet Eclipse paramétré, le gain de temps à la compilation, aux tests et au débogage n’est pas négligeable ! Pour ma part, je peux enfin me lancer sereinement dans la création d’un programme permettant de piloter le PiRobot !
Ressources :
HackADay – Code Craft : Cross Compiling for the Raspberry Pi
BenTeK.
0 commentaires