Delen via


Fouten opsporen in een toepassing die in realtime kan worden uitgevoerd

RTApps worden foutopsporing uitgevoerd met behulp van OpenOCD, dat is geïnstalleerd met de Azure Sphere SDK, en de versie van GDB die is geïnstalleerd als onderdeel van de ARM GNU Embedded Toolchain.

Fouten opsporen in RTApp met Visual Studio

  1. Zorg ervoor dat uw apparaat via USB is aangesloten op uw pc. Selecteer in het menu Opstartitem instellende optie Azure Sphere-app (RT Core) waarbij Azure Sphere-app de naam is van uw huidige realtime-compatibele toepassing of druk op F5.

    Knop Extern GDB-foutopsporingsprogramma

  2. Als u wordt gevraagd het project te bouwen, selecteert u Ja. Visual Studio compileert de in realtime geschikte toepassing, maakt een installatiekopieënpakket, sideloadt het op het bord en start deze in de foutopsporingsmodus. Sideloading betekent dat de toepassing rechtstreeks vanaf de pc wordt geleverd via een bekabelde verbinding, in plaats van via de cloud.

    Noteer de installatiekopieën-id van het installatiekopieënpakket in uitvoer>> weergevenUitvoer weergeven van: Build-uitvoer Wanneer u klaar bent om een implementatie te maken, moet u het pad naar het installatiekopieënpakket kennen.

  3. In het venster Uitvoer wordt standaard de uitvoer van Apparaatuitvoer weergegeven. Als u berichten uit het foutopsporingsprogramma wilt zien, selecteert u Foutopsporing in de vervolgkeuzelijst Uitvoer weergeven van: . U kunt ook de demontage van het programma, de registers of het geheugen controleren via het menu Foutopsporing>in Windows .

Visual Studio stelt verbindingen in tussen de GDB-server en OpenOCD, zodat u de standaardinterface voor foutopsporing van Visual Studio (F5, F6, F9 voor onderbrekingspunten, enzovoort) op een RTApp kunt gebruiken, op dezelfde manier als in een app op hoog niveau.

Als deze is gestopt bij een onderbrekingspunt in uw C-broncode, kunt u een demontagevenster openen met het huidige adres, het ezelsbruggetje voor de huidige opdracht en informatie zoals de betrokken registers of de broncodeopdracht die wordt uitgevoerd.

Het venster Demontage openen:

  1. Zorg ervoor dat het C-codebronbestand met het onderbrekingspunt is geopend in Visual Studio.
  2. Selecteer Fouten opsporen>inWindows-demontage> of druk op Alt+8.

Fouten opsporen in RTApp met Visual Studio Code

Visual Studio Code wordt foutopsporing uitgevoerd door op F5 te drukken of de foutopsporingsopdracht uit te voeren vanuit de foutopsporingsweergave op de linkerbalk. In de voorbeelden bestaat de .vscode/launch.json al, dus de foutopsporing wordt onmiddellijk gestart. In een nieuwe app wordt bij foutopsporing eerst gevraagd of dit een HLApp of RTApp is en maakt u een .vscode/launch.json op basis van uw antwoord. Foutopsporing wordt vervolgens ingeschakeld.

Als u stopt bij een onderbrekingspunt in uw C-broncode, kunt u een demontageweergave openen met het huidige adres, onbewerkte hexgegevens, het ezelsbruggetje van de assemblyr voor de huidige opdracht en informatie, zoals de betrokken registers of de broncodeopdracht die wordt uitgevoerd.

De weergave Demontage openen:

  1. Zorg ervoor dat het C-codebronbestand met het onderbrekingspunt is geopend in een Visual Studio Code-editor.
  2. Klik met de rechtermuisknop in het editorvenster en selecteer Demontageweergave openen of selecteerOpdrachtpalet>Weergeven>Demontageweergave openen.

Fouten opsporen in RTApp met behulp van de CLI

  1. Start de toepassing voor foutopsporing:

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

    Met deze opdracht wordt de kern geretourneerd waarop de toepassing wordt uitgevoerd.

  2. Navigeer naar de map Openocd voor de sysroot waarmee de toepassing is gebouwd. In deze quickstart is de sysroot 5+Beta2004. De sysroots worden geïnstalleerd in de installatiemap van de Azure Sphere SDK. In Windows wordt de map bijvoorbeeld standaard geïnstalleerd op C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\5+Beta2004\tools\openocd en in Linux, op /opt/azurespheresdk/Sysroots/5+Beta2004/tools/sysroots/x86_64-pokysdk-linux/usr/bin/openocd.

  3. Voer uit openocd zoals in het volgende voorbeeld wordt weergegeven. In het voorbeeld wordt ervan uitgegaan dat de app wordt uitgevoerd op core 0. Als de app wordt uitgevoerd op core 1, vervangt u 'targets io0' door '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"
    
  4. Open een opdrachtregelinterface met behulp van PowerShell, Windows-opdrachtprompt of Linux-opdrachtshell.

  5. Navigeer naar de map met het .out-bestand van de toepassing en start arm-none-eabi-gdb, dat deel uitmaakt van de ARM GNU Embedded Toolchain:

    Windows-opdrachtprompt

    "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
    
  6. De OpenOCD-server biedt een GDB-serverinterface op :4444. Stel het doel voor foutopsporing in.

    target remote :4444

  7. Voer de gdb-opdrachten uit die u kiest.

Ontwikkelen met partner-apps

Wanneer u een toepassing op het Azure Sphere-apparaat laadt, worden met de Azure Sphere-implementatiehulpprogramma's standaard alle bestaande toepassingen verwijderd. Om dit te voorkomen wanneer u toepassingen ontwikkelt die met elkaar communiceren, moet u de toepassingen markeren als partners. Wanneer u een van de toepassingen implementeert, worden de bijbehorende partners niet verwijderd. Zie Toepassingen markeren als partners voor meer informatie.

Probleemoplossing

Als u problemen ondervindt, raadpleegt u Problemen met realtime compatibele toepassingen oplossen.