Depurar aplicativos de parceiros
Importante
Esta é a documentação do Azure Sphere (herdado). O Azure Sphere (herdado) 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).
Verifique se seu dispositivo está conectado ao seu PC por USB. No menu Definir item de inicialização, selecione Aplicativo do Azure Sphere (Todos os Núcleos), em que o Aplicativo do Azure Sphere é o nome do projeto de nível superior ou pressione F5.
Caso precise compilar o projeto, selecione Sim. O Visual Studio compila os aplicativos parceiros, cria pacotes de imagem, faz sideload deles na placa e os inicia no modo de depuração. O sideload significa que os aplicativos são entregues diretamente do PC por meio de uma conexão com fio, em vez de entregues por meio da nuvem.
Observe os caminhos na saída Exibir>saída>Mostrar saída de: Saída de build, que indica o local dos pacotes de imagem de saída em seu computador. Quando estiver pronto para criar uma implantação, você precisará saber os caminhos para os pacotes de imagem.
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:. Inspecione também a desmontagem do programa, os registros ou a memória por meio do menu Depuração>Windows.
Se você tiver dois RTApps, certifique-se de que ambos estejam listados como aplicativos parceiros no arquivo launch.vs.json de nível superior.
Use o depurador do Visual Studio para definir pontos de interrupção, pausar, passar, entrar, reiniciar ou parar o aplicativo.
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 do 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 janela Desmontagem :
- Verifique se o arquivo de origem do código C que contém o ponto de interrupção está aberto no Visual Studio.
- Selecione Depurar>desmontagem do Windows>ou pressione Alt+8.
Abra a pasta que contém seus aplicativos de parceiros. O Visual Studio Code detecta o arquivo do workspace e pergunta se você deseja abrir o workspace. Selecione Abrir espaço de trabalho para abrir o aplicativo em tempo real e o aplicativo de alto nível de uma só vez.
Clique com o botão direito do mouse em um dos dois arquivos CMakeLists.txt e selecione Construir todos os projetos.
Clique no ícone Executar na Barra de Atividades do Visual Studio Code.
No menu suspenso que aparece na parte superior da janela no lado esquerdo da tela, selecione Iniciar Aplicativos do Azure Sphere (gdb)(workspace).
Pressione F5 para compilar e depurar o projeto. Se o projeto não tiver sido criado anteriormente ou se os arquivos tiverem sido alterados e a recompilação for necessária, o Visual Studio Code compilará o projeto antes do início da depuração.
Aguarde alguns segundos para que o Visual Studio Code compile os aplicativos, crie os pacotes de imagem, implante-os na placa e inicie-os no modo de depuração. Você verá atualizações de status no painel Saída ao longo do caminho.
Primeiro, o CMake determina se os aplicativos precisam ser criados. Nesse caso, o foco muda para a janela de saída, que exibe a saída do CMake/Build.
Em seguida, o painel de saída mostra a saída do azsphere à medida que ele implanta o pacote de imagem no dispositivo. Por fim, o console de depuração recebe o foco e mostra a saída do gdb.
Use o depurador do Visual Studio Code para definir pontos de interrupção, pausar, passar, entrar, reiniciar ou parar o aplicativo.
Enquanto estiver parado em um ponto de interrupção no código-fonte C, você pode abrir uma exibição de desmontagem que mostra o endereço atual, os dados hexadecimais brutos, o mnemônico do 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:
- Verifique se o arquivo de origem do código C que contém o ponto de interrupção está aberto em um editor do Visual Studio Code.
- Clique com o botão direito do mouse na janela do editor e selecione Abrir vista de desmontagem ou selecione Exibir>paleta>de comandos Abrir vista de desmontagem.
Pare o aplicativo com capacidade em tempo real se ele estiver em execução.
azsphere device app stop --component-id <component id>
Reinicie o aplicativo com capacidade em tempo real com depuração.
azsphere device app start --component-id <component id>
Este comando retorna o núcleo no qual o aplicativo está em execução.
<component id> App state : running Core : Real time 0
Navegue até a pasta Openocd para o sysroot com o qual o aplicativo foi compilado. 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\*sysroot*\tools\openocd
e no Linux, em/opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux
.Execute
openocd
como mostra o exemplo a seguir. O exemplo pressupõe que o aplicativo está em execução no núcleo 0. Se o aplicativo estiver em execução no núcleo 1, substitua "targets io0" por "targets io1".Abra uma interface de linha de comando usando o PowerShell, o Prompt de Comando do Windows ou o shell de comando do Linux.
Navegue até a pasta que contém o arquivo .out do aplicativo compatível em tempo real e inicie
arm-none-eabi-gdb
o , que faz parte do GNU Arm Embedded Toolchain:Prompt de Comando 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
O servidor de OpenOCD fornece uma interface de servidor do GDB em: 4444. Defina o destino para a depuração.
target remote :4444
Agora você pode executar comandos gdb. Adicione um ponto de interrupção na função HandleSendTimerDeferred:
break HandleSendTimerDeferred
O emulador de terminal conectado deve exibir a saída do aplicativo com capacidade em tempo real.
Abra um novo Prompt de Comando do Azure Sphere (Windows) ou uma janela de terminal (Linux).
Navegue até a pasta que contém o arquivo .imagepackage do aplicativo de alto nível.
Se o aplicativo estiver em execução, interrompa-o e reinicie-o com a depuração:
azsphere device app stop --component-id <ComponentId>
azsphere device app start --debug-mode --component-id <ComponentId>
Abra um emulador de terminal e estabeleça uma conexão Telnet ou TCP com 192.168.35.2 na porta 2342 para exibir a saída do aplicativo de alto nível.
Inicie o gdb com o seguinte comando:
Prompt de Comando do 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
Observação
O SDK do Azure Sphere é fornecido com vários sysroots para que os aplicativos possam direcionar diferentes conjuntos de APIs, conforme descrito em Versão do runtime do aplicativo, sysroots e APIs beta. Os sysroots são instalados na pasta de instalação do SDK do Azure Sphere em Sysroots.
Defina o destino de depuração remota para o endereço IP 192.168.35.2 na porta 2345:
target remote 192.168.35.2:2345
Adicione um ponto de interrupção na função SendMessageToRTApp:
break SendMessageToRTApp
Digite
c
para continuar, observe a saída em seu terminal Telnet/TCP e, em seguida, alterne para o prompt de comando ou janela de terminal que contém sua sessão de depuração de aplicativos em tempo real.Digite
c
para continuar e observar a saída em sua sessão serial conectada.
Você pode trabalhar entre as sessões de depuração, alternando entre o aplicativo com capacidade para tempo real e o aplicativo de alto nível. Você deve ver uma saída semelhante à seguinte nas duas janelas de saída:
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
Para encerrar cada sessão de depuração, digite q
no prompt gdb.