Condividi tramite


Eseguire il debug di un'applicazione con funzionalità in tempo reale

Importante

Questa è la documentazione di Azure Sphere (legacy). Azure Sphere (legacy) viene ritirato il 27 settembre 2027 e gli utenti devono eseguire la migrazione ad Azure Sphere (integrato) entro questo periodo. Usare il selettore di versione posizionato sopra il sommario per visualizzare la documentazione di Azure Sphere (integrata).

Le applicazioni RTApp vengono sottoposto a debug usando OpenOCD, che viene installato con Azure Sphere SDK e la versione di GDB installata come parte della toolchain ARM GNU Embedded.

Eseguire il debug di un'applicazione RTApp con Visual Studio

  1. Assicurarsi che il dispositivo sia connesso al PC tramite USB. Nel menu Imposta voce di avvio selezionare App Azure Sphere (RT Core) in cui l'app Azure Sphere è il nome dell'applicazione con supporto in tempo reale corrente o premere F5.

    Pulsante Debugger GDB remoto

  2. Se viene richiesto di compilare il progetto, selezionare . Visual Studio compila l'applicazione con funzionalità in tempo reale, crea un pacchetto immagine, lo trasferisce localmente nella scheda e lo avvia in modalità di debug. Trasferimento locale significa che l'applicazione viene distribuita direttamente dal computer tramite una connessione cablata, invece che tramite il cloud.

    Si noti l'ID immagine del pacchetto immagine nell'output Visualizza>output>di: Output di compilazione Quando si è pronti per creare una distribuzione, sarà necessario conoscere il percorso del pacchetto immagine.

  3. Per impostazione predefinita, nella finestra Output viene visualizzato l'output dell'output del dispositivo. Per visualizzare i messaggi del debugger, selezionare Debug dal menu a discesa Mostra output di:. È anche possibile esaminare il disassembly, i registri o la memoria del programma tramite il menu Debug>Windows.

Visual Studio configura le connessioni tra il server GDB e OpenOCD in modo da consentire di usare l'interfaccia di debug standard di Visual Studio (F5, F6, F9 per i punti di interruzione e così via) in un'applicazione RTApp, proprio come in un'app di alto livello.

Durante l'arresto in corrispondenza di un punto di interruzione nel codice sorgente C, è possibile aprire una finestra Disassembly che mostra l'indirizzo corrente, l'assembler mnemonic per il comando corrente e informazioni quali i registri coinvolti o il comando del codice sorgente in esecuzione.

Per aprire la finestra Disassembly :

  1. Assicurarsi che il file sorgente del codice C contenente il punto di interruzione sia aperto in Visual Studio.
  2. Selezionare Debug>disassembly di Windows>oppure premere ALT+8.

Eseguire il debug di un'applicazione RTApp con Visual Studio Code

Visual Studio Code viene sottoposto a debug premendo F5 o eseguendo il comando di debug dalla visualizzazione debug sulla barra sinistra. Negli esempi il file vscode/launch.json esiste già, quindi il debug verrà avviato immediatamente. In una nuova app, il debug chiederà innanzitutto se si tratta di un'applicazione HLApp o RTApp e quindi creerà un file .vscode/launc.json in base alla risposta. Il debug verrà quindi abilitato.

Durante l'arresto in corrispondenza di un punto di interruzione nel codice sorgente C, è possibile aprire una visualizzazione Disassembly che mostra l'indirizzo corrente, i dati esadecimali non elaborati, l'assembler mnemonic per il comando corrente e informazioni quali i registri coinvolti o il comando del codice sorgente in esecuzione.

Per aprire la visualizzazione Disassembly:

  1. Verificare che il file sorgente del codice C contenente il punto di interruzione sia aperto in un editor di Visual Studio Code.
  2. Fare clic con il pulsante destro del mouse nella finestra dell'editor e scegliere Apri visualizzazione disassembly oppure selezionare Visualizza>riquadro>comandi Apri visualizzazione disassembly.

Eseguire il debug di un'applicazione RTApp con l'interfaccia della riga di comando

  1. Avviare l'applicazione per il debug:

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

    Questo comando restituisce la core su cui è in esecuzione l'applicazione.

  2. Passare alla cartella Openocd per il sysroot in cui è stata creata l'applicazione. In questa guida di avvio rapido la directory sysroot è 5+Beta2004. I sysroot sono installati nella cartella di installazione di Azure Sphere SDK. Ad esempio, in Windows la cartella viene installata per impostazione predefinita in C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\5+Beta2004\tools\openocd e in Linux in /opt/azurespheresdk/Sysroots/5+Beta2004/tools/sysroots/x86_64-pokysdk-linux/usr/bin/openocd.

  3. Eseguire openocd come illustrato nell'esempio seguente. L'esempio presuppone che l'app sia in esecuzione nella core 0. Se l'app è in esecuzione nel core 1, sostituire "targets io0" con "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. Aprire un'interfaccia della riga di comando usando PowerShell, il prompt dei comandi di Windows o la shell dei comandi linux.

  5. Passare alla cartella che contiene il file con estensione out dell'applicazione e avviare arm-none-eabi-gdb, che fa parte della toolchain incorporata GNU ARM:

    Prompt dei comandi di 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
    
  6. Il server OpenOCD fornisce un'interfaccia per il server GDB su :4444. Impostare la destinazione per il debug.

    target remote :4444

  7. Eseguire tutti i comandi gdb scelti.

Sviluppare con le app partner

Quando si carica un'applicazione nel dispositivo Azure Sphere, per impostazione predefinita gli strumenti di distribuzione di Azure Sphere eliminano tutte le applicazioni esistenti. Per evitare che ciò accada quando si sviluppano applicazioni che comunicano tra loro, è necessario contrassegnare le applicazioni come partner. Quando si distribuisce una delle applicazioni, i partner non verranno eliminati. Per informazioni dettagliate, vedere Contrassegnare le applicazioni come partner.

Risoluzione dei problemi

Se si verificano problemi, vedere Risoluzione dei problemi delle applicazioni con funzionalità in tempo reale.