Déboguer une application de haut niveau
Important
Il s’agit de la documentation Azure Sphere (héritée). Azure Sphere (hérité) prend sa retraite le 27 septembre 2027 et les utilisateurs doivent migrer vers Azure Sphere (intégré) pour l’instant. Utilisez le sélecteur de version situé au-dessus du TOC pour afficher la documentation Azure Sphere (intégrée).
Vérifiez que votre appareil est connecté à votre PC par USB. Dans le menu Définir l’élément de démarrage, sélectionnez Azure Sphere App (HLCore) où Azure Sphere App est le nom de votre application générale actuelle ou appuyez sur F5.
Si vous êtes invité à générer le projet, sélectionnez Oui. Visual Studio compile l’application, crée un package d’image, le charge indépendamment sur la carte, puis le démarre en mode débogage. Le chargement indépendant (sideloading) signifie que l’application est remise directement à partir du PC via une connexion câblée plutôt qu’avec le cloud.
Notez l’ID d’image du package d’images dans la sortie Afficher la sortie afficher>>à partir de : Sortie de build. Vous utiliserez l’ID d’image plus loin dans le tutoriel : Créer un déploiement cloud.
Par défaut, la fenêtre Sortie affiche la sortie de l’appareil. Pour voir les messages à partir du débogueur, sélectionnez Déboguer dans le menu déroulant Afficher la sortie à partir de :. Vous pouvez également inspecter le désassemblage du programme, les registres ou la mémoire par le biais du menu Déboguer>Fenêtres.
Vous pouvez ensuite utiliser le débogueur Visual Studio pour définir des points d’arrêt, suspendre, effectuer un pas à pas, effectuer un pas à pas, redémarrer ou arrêter l’application.
Lors de l’arrêt à un point d’arrêt dans votre code source C, vous pouvez ouvrir une fenêtre Désassembleur qui affiche l’adresse actuelle, l’assembleur mnemonique pour la commande actuelle et des informations telles que les registres impliqués ou la commande de code source en cours d’exécution.
Pour ouvrir la fenêtre Désassembleur :
- Vérifiez que le fichier source de code C contenant le point d’arrêt est ouvert dans Visual Studio.
- Sélectionnez Désassembler> Windows>ou appuyez sur Alt+8.
Appuyez sur F5 pour générer et déboguer le projet. Si le projet n’a pas été créé précédemment ou si les fichiers ont changé et regénéré sont requis, Visual Studio Code génère le projet avant le démarrage du débogage.
Attendez plusieurs secondes pour que Visual Studio Code génère l’application, créez un package d’images, déployez-le sur la carte et démarrez-le en mode débogage. Vous verrez les mises à jour d’état dans le volet Sortie le long du chemin.
Tout d’abord, CMake détermine si l’application doit être générée. Si c’est le cas, le focus passe à la fenêtre de sortie, qui affiche la sortie de CMake/Build.
Ensuite, le volet Sortie affiche le résultat à mesure que le package d’image est déployé sur l’appareil. Enfin, la console de débogage reçoit le focus et affiche la sortie du débogueur.
Utilisez le débogueur Visual Studio Code pour définir des points d’arrêt, suspendre, effectuer un pas à pas, effectuer un pas à pas, redémarrer ou arrêter l’application.
Lors de l’arrêt à un point d’arrêt dans votre code source C, vous pouvez ouvrir une vue Désassemblement qui affiche l’adresse actuelle, les données hexadécimaux brutes, l’assembleur mnemonique pour la commande actuelle et des informations telles que les registres impliqués ou la commande de code source en cours d’exécution.
Pour ouvrir la vue Désassemblement :
- Vérifiez que le fichier source du code C contenant le point d’arrêt est ouvert dans un éditeur Visual Studio Code.
- Cliquez avec le bouton droit dans la fenêtre de l’éditeur et sélectionnez Ouvrir le mode Désassembleur ou sélectionnez Afficher>la palette>de commandes Ouvrir le mode Désassembleur.
Pour déboguer l’application, arrêtez-la, puis redémarrez-la avec le débogage :
azsphere device app stop --component-id <ComponentId>
azsphere device app start --debug-mode --component-id <ComponentId>
Ce qui suit doit s’afficher :
<ComponentID>
App state : debugging
GDB port : 2345
Output port : 2342
Core : High-level
Command completed successfully in 00:00:00.9121174.
Ouvrez une invite de commandes et utilisez n’importe quel client de terminal Windows pour établir une connexion Telnet ou TCP brute pour lire le flux de sortie à partir du processus. Spécifiez l’adresse IP 192.168.35.2 et le port 2342.
Ouvrez une interface de ligne de commande à l’aide de PowerShell, de l’invite de commandes Windows ou de l’interpréteur de commandes Linux. Démarrez le débogueur de ligne de commande gdb :
Invite de commandes Windows
"C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
Windows PowerShell
& "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
Remarque
Le SDK Azure Sphere est fourni avec plusieurs sysroots afin que les applications puissent cibler différents ensembles d’API, comme décrit dans la version du runtime d’application, sysroots et les API bêta. Les sysroots sont installés dans le dossier d’installation du SDK Azure Sphere sous Sysroots.
Définissez la cible de débogage à distance sur l’adresse IP 192.168.35.2 sur le port 2345 :
target remote 192.168.35.2:2345
Exécutez les commandes gdb que vous choisissez. Par exemple :
break main
c
Les commandes
break
etc
définissent un point d’arrêt lors de l’entrée dans main(), puis continuer leur exécution après le point d’arrêt. De nombreuses sources de documentation concernant gdb sont disponibles.