Partager via


Déboguer des applications partenaires

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).

  1. Vérifiez que votre appareil est connecté à votre PC par USB. Dans le menu Définir l’élément de démarrage, sélectionnez Application Azure Sphere (Tous les cœurs)Azure Sphere App est le nom de votre projet de niveau supérieur ou appuyez sur F5.

    Bouton Débogueur GDB distant

  2. Si vous êtes invité à générer le projet, sélectionnez Oui. Visual Studio compile les applications partenaires, crée des packages d’images, les charge sur la carte et les démarre en mode débogage. Le chargement indépendant signifie que les applications sont livrées directement à partir du PC via une connexion câblée, plutôt que transmises via le cloud.

    Notez les chemins d’accès dans la sortie Afficher la sortie d’affichage>>à partir de : Sortie de build, qui indique l’emplacement des packages d’images de sortie sur votre PC. Lorsque vous êtes prêt à créer un déploiement, vous devez connaître les chemins d’accès aux packages d’images.

  3. 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.

Si vous avez deux applications RTApps, vérifiez que les deux sont répertoriées en tant qu’applications partenaires dans le fichier launch.vs.json de niveau supérieur.

Utilisez le débogueur Visual Studio pour définir des points d’arrêt, suspendre, effectuer un pas à pas, entrer, 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 :

  1. Vérifiez que le fichier source de code C contenant le point d’arrêt est ouvert dans Visual Studio.
  2. Sélectionnez Désassembler> Windows>ou appuyez sur Alt+8.
  1. Ouvrez le dossier contenant vos applications partenaires. Visual Studio Code détecte le fichier d’espace de travail et vous demande si vous souhaitez ouvrir l’espace de travail. Sélectionnez Ouvrir l’espace de travail pour ouvrir l’application en temps réel et l’application de haut niveau en même temps.

  2. Cliquez avec le bouton droit sur l’un des deux fichiers CMakeLists.txt, puis sélectionnez Générer tous les projets.

  3. Cliquez sur l’icône Exécuter dans la barre d’activité Visual Studio Code.

  4. Dans le menu déroulant qui s’affiche en haut de la fenêtre sur le côté gauche de l’écran, sélectionnez Lancer Azure Sphere Apps (gdb)(workspace).

  5. 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.

  6. Attendez plusieurs secondes pour que Visual Studio Code génère les applications, créez les packages d’images, déployez-les sur la carte et démarrez-les 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 les applications doivent être générées. Si c’est le cas, le focus passe à la fenêtre de sortie, qui affiche la sortie de CMake/Build.

    Ensuite, le volet de sortie affiche la sortie d’azsphere lors du déploiement du package d’images sur l’appareil. Enfin, la console de débogage reçoit le focus et montre la sortie de gdb.

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 :

  1. Vérifiez que le fichier source du code C contenant le point d’arrêt est ouvert dans un éditeur Visual Studio Code.
  2. 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.
  1. Arrêtez l’application en temps réel si elle est en cours d’exécution.

    azsphere device app stop --component-id <component id>
    
  2. Démarrez à nouveau l’application en temps réel avec débogage.

    azsphere device app start --component-id <component id>
    

    Cette commande retourne le cœur sur lequel l’application s’exécute.

      <component id>
      App state   : running
      Core        : Real time 0
    
  3. Accédez au dossier Openocd pour le sysroot avec lequel l’application a été générée. Les sysroots sont installés dans le dossier d’installation du SDK Azure Sphere. Par exemple, sur Windows, le dossier est installé par défaut dans C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd et sur Linux, dans /opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux.

  4. Exécutez openocd comme le montre l’exemple suivant. L’exemple suppose que l’application s’exécute sur le cœur 0. Si l’application s’exécute sur le cœur 1, remplacez « targets io0 » par « targets io1 ».

    openocd -f mt3620-rdb-ftdi.cfg -f mt3620-io0.cfg -c "gdb_memory_map disable" -c "gdb_breakpoint_override hard" -c init -c "targets io0" -c halt -c "targets"
    
  5. 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.

  6. Accédez au dossier qui contient le fichier .out de l’application en temps réel et démarrez arm-none-eabi-gdb, qui fait partie de la chaîne d’outils GNU Arm Embedded :

    Invite de commandes Windows

    "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
    
  7. Le serveur OpenOCD fournit une interface de serveur GDB sur :4444. Définissez la cible pour le débogage.

    target remote :4444

  8. Vous pouvez maintenant exécuter des commandes gdb. Ajoutez un point d’arrêt à la fonction HandleSendTimerDeferred :

    break HandleSendTimerDeferred

  9. L’émulateur de terminal connecté doit afficher la sortie de l’application compatible en temps réel.

  10. Ouvrez une nouvelle invite de commandes Azure Sphere (Windows) ou une fenêtre de terminal (Linux).

  11. Accédez au dossier qui contient le fichier .imagepackage d’application de haut niveau.

  12. Si l’application est en cours d’exécution, 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>
    
  13. Ouvrez un émulateur de terminal et établissez une connexion Telnet ou TCP à 192.168.35.2 au port 2342 pour afficher la sortie de l’application de haut niveau.

  14. Démarrez gdb avec la commande suivante :

    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.

  15. 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
    
  16. Ajoutez un point d’arrêt à la fonction SendMessageToRTApp :

    break SendMessageToRTApp
    
  17. Tapez c pour continuer, observez la sortie dans votre terminal Telnet/TCP, puis basculez vers l’invite de commandes ou la fenêtre de terminal contenant votre session de débogage d’application en temps réel.

  18. Tapez c pour continuer et observer la sortie dans votre session série connectée.

Vous pouvez travailler en arrière entre les sessions de débogage, basculer entre l’application en temps réel et l’application de haut niveau. Vous devez voir la sortie similaire à la suivante dans les deux fenêtres de sortie :

Starting debugger....
                     Process /mnt/apps/25025d2c-66da-4448-bae1-ac26fcdd3627/bin/app created; pid = 40
                     Listening on port 2345
                                           Remote debugging from host 192.168.35.1, port 56522
              High-level intercore comms application
                                                    Sends data to, and receives data from a real-time capable application.
                                          Sending: hl-app-to-rt-app-00
                                                                      Sending: hl-app-to-rt-app-01
IntercoreComms_RTApp_MT3620_BareMetal
App built on: Nov 17 2020, 09:25:19
Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
Message size: 19 bytes:
Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:30
Text: hl-app-to-rt-app-00

Pour mettre fin à chaque session de débogage, tapez q à l’invite gdb.