Partager via


Déboguer des applications partenaires

  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)Application Azure Sphere 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 fournies directement à partir du PC via une connexion câblée, plutôt que par le biais du cloud.

    Notez les chemins d’accès dans la sortie Afficher> lasortie> de : Sortiede build, qui indique l’emplacement des packages d’image 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 sortie de l’appareil. Pour afficher les messages du débogueur, sélectionnez Déboguer dans le menu déroulant Afficher la sortie de : . Vous pouvez également inspecter le désassemblement du programme, les registres ou la mémoire via le menu Déboguer>Windows .

Si vous avez deux applications en temps réel, 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, effectuer un pas à pas détaillé, redémarrer ou arrêter l’application.

Lorsque vous vous arrêtez à un point d’arrêt dans votre code source C, vous pouvez ouvrir une fenêtre Désassemblement qui affiche l’adresse actuelle, le mnémonique de l’assembleur 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ésassemblement :

  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éboguer> ledésassemblementwindows> 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 simultanément l’application en temps réel et l’application générale.

  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 des applications Azure Sphere (gdb)(espace de travail) .

  5. Appuyez sur F5 pour générer et déboguer le projet. Si le projet n’a pas été généré précédemment, ou si les fichiers ont changé et qu’une reconstruction est nécessaire, Visual Studio Code génère le projet avant le démarrage du débogage.

  6. Attendez plusieurs secondes que Visual Studio Code génère les applications, crée les packages d’images, les déploie sur la carte et les démarre en mode débogage. Vous verrez status mises à jour dans le volet Sortie en cours de route.

    Tout d’abord, CMake détermine si les applications doivent être générées. Si c’est le cas, le focus se déplace sur la fenêtre de sortie, qui affiche la sortie de CMake/Build.

    Ensuite, le volet de sortie affiche la sortie lors du déploiement du package d’images sur l’appareil. Enfin, la console de débogage reçoit le focus et affiche la sortie 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 détaillé, 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écimale brutes, l’assembleur mnémonique de 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 de 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ésassemble ou sélectionnez Afficher> lapalette> de commandesOuvrir la vue Désassemble.
  1. Arrêtez l’application compatible en temps réel si elle est en cours d’exécution.

    az sphere device app stop --component-id <component id>
    
  2. Relancez l’application prenant en compte le temps réel avec le débogage.

    az sphere device app start --component-id <component id>
    

    Cette commande retourne le noyau 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 Kit de développement logiciel (SDK) Azure Sphere. Par exemple, sur Windows, le dossier est installé par défaut sur C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd et sur Linux, à l’adresse /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 noyau 0. Si l’application s’exécute sur core 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 nouvelle fenêtre de terminal (Linux).

  11. Accédez au dossier qui contient le fichier .imagepackage de l’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 :

    az sphere device app stop --component-id <ComponentId>
    
    az sphere 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 sur le 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
    

    Note

    Le Kit de développement logiciel (SDK) Azure Sphere est fourni avec plusieurs sysroots afin que les applications puissent cibler différents ensembles d’API, comme décrit dans Version du runtime d’application, sysroots et API bêta. Les sysroots sont installés dans le dossier d’installation du Kit de développement logiciel (SDK) Azure Sphere sous Sysroots.

  15. Définissez la cible de débogage distant 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 effectuer des allers-retours entre les sessions de débogage, en basculant entre l’application en temps réel et l’application de haut niveau. Vous devez voir une sortie similaire à ce qui suit 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.