Partilhar via


Depurar um aplicativo com capacidade em tempo real

Importante

Esta é a documentação do Azure Sphere (Legado). O Azure Sphere (Legado) será desativado em 27 de setembro de 2027 e os usuários devem migrar para o Azure Sphere (Integrado) até esse momento. Use o seletor de versão localizado acima do sumário para exibir a documentação do Azure Sphere (Integrado).

Os RTApps são depurados usando o OpenOCD, que é instalado com o SDK do Azure Sphere, e a versão do GDB que é instalada como parte do ARM GNU Embedded Toolchain.

Depurar RTApp com Visual Studio

  1. Certifique-se de que o dispositivo está ligado ao PC por USB. No menu Definir item de inicialização, selecione Azure Sphere App (RT Core), onde Azure Sphere App é o nome do seu aplicativo atual com capacidade em tempo real ou pressione F5.

    Botão Depurador GDB remoto

  2. Se você for solicitado a criar o projeto, selecione Sim. O Visual Studio compila o aplicativo capaz em tempo real, cria um pacote de imagem, faz sideload na placa e o inicia no modo de depuração. Sideload significa que o aplicativo é entregue diretamente do PC através de uma conexão com fio, em vez de entregue através da nuvem.

    Observe o ID da imagem do pacote de imagem na saída View>Output>Show de: Build output Quando estiver pronto para criar uma implantação, você precisará saber o caminho para o pacote de imagem.

  3. Por padrão, a janela Saída mostra a saída da Saída do dispositivo. Para ver as mensagens do depurador, selecione Depurar no menu suspenso Mostrar saída de: . Você também pode inspecionar a desmontagem do programa, registros ou memória através do menu Depurar>Windows.

O Visual Studio configura conexões entre o servidor GDB e o OpenOCD para que você possa usar a interface de depuração padrão do Visual Studio (F5, F6, F9 para pontos de interrupção e assim por diante) em um RTApp, da mesma forma que em um aplicativo de alto nível.

Enquanto estiver parado em um ponto de interrupção no código-fonte C, você pode abrir uma janela Desmontagem que mostra o endereço atual, o mnemônico assembler para o comando atual e informações como os registradores envolvidos ou o comando do código-fonte que está sendo executado.

Para abrir a janela Desmontagem :

  1. Verifique se o arquivo de origem do código C que contém o ponto de interrupção está aberto no Visual Studio.
  2. Selecione Depurar>Desmontagem do Windows>ou pressione Alt+8.

Depurar RTApp com código do Visual Studio

O Visual Studio Code é depurado pressionando F5 ou executando o comando debug no modo de exibição de depuração na barra esquerda. Nos exemplos, o .vscode/launch.json já existe, portanto, a depuração será iniciada imediatamente. Em um novo aplicativo, a depuração perguntará primeiro se este é um HLApp ou RTApp e criará um .vscode/launch.json a partir da sua resposta. A depuração será então ativada.

Enquanto estiver parado em um ponto de interrupção no código-fonte C, você pode abrir uma visualização Desmontagem que mostra o endereço atual, dados hexadecimais brutos, o mnemônico assembler para o comando atual e informações como os registros envolvidos ou o comando do código-fonte que está sendo executado.

Para abrir a vista Desmontagem:

  1. Verifique se o arquivo de origem do código C que contém o ponto de interrupção está aberto em um editor de código do Visual Studio.
  2. Clique com o botão direito do rato na janela do editor e selecione Abrir Vista de Desmontagem ou selecione Ver>Paleta>de Comandos Abrir Vista de Desmontagem.

Depurar RTApp usando a CLI

  1. Inicie o aplicativo para depuração:

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

    Este comando retorna o núcleo no qual o aplicativo está sendo executado.

  2. Navegue até a pasta Openocd para o sysroot com o qual o aplicativo foi construído. Neste Guia de início rápido, o sysroot é 5+Beta2004. Os sysroots são instalados na pasta de instalação do SDK do Azure Sphere. Por exemplo, no Windows a pasta é instalada por padrão em C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\5+Beta2004\tools\openocd e no Linux, em /opt/azurespheresdk/Sysroots/5+Beta2004/tools/sysroots/x86_64-pokysdk-linux/usr/bin/openocd.

  3. Execute openocd como mostra o exemplo a seguir. O exemplo pressupõe que o aplicativo está sendo executado no núcleo 0. Se o aplicativo estiver sendo executado no núcleo 1, substitua "targets io0" por "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. Abra uma interface de linha de comando usando PowerShell, Prompt de Comando do Windows ou shell de comando do Linux.

  5. Navegue até a pasta que contém o arquivo .out do aplicativo e inicie arm-none-eabi-gdbo , que faz parte do ARM GNU Embedded Toolchain:

    Linha de Comandos do 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. O servidor OpenOCD fornece uma interface de servidor GDB em :4444. Defina o destino para depuração.

    target remote :4444

  7. Execute qualquer comando gdb que você escolher.

Desenvolva com aplicativos parceiros

Quando você carrega um aplicativo no dispositivo Azure Sphere, as ferramentas de implantação do Azure Sphere excluem, por padrão, todos os aplicativos existentes. Para evitar que isso aconteça quando você desenvolve aplicativos que se comunicam entre si, você precisa marcar os aplicativos como parceiros. Quando você implanta um dos aplicativos, seus parceiros não serão excluídos. Consulte Marcar aplicativos como parceiros para obter detalhes.

Resolução de Problemas

Se você encontrar problemas, consulte Solução de problemas de aplicativos compatíveis em tempo real.