Compartir vía


Depurar aplicaciones de partners

  1. Asegúrate de que el dispositivo esté conectado a tu PC mediante USB. En el menú Establecer elemento de inicio , selecciona Azure Sphere App (All Cores) donde Azure Sphere App es el nombre de tu proyecto de nivel superior o presiona F5.

    Botón Depurador GDB remoto

  2. Si se le pide que cree el proyecto, seleccione . Visual Studio compila las aplicaciones asociadas, crea paquetes de imagen, los carga de prueba en el panel y los inicia en modo de depuración. La instalación de prueba significa que las aplicaciones se entregan directamente desde el equipo a través de una conexión por cable, en lugar de entregarse a través de la nube.

    Observe las rutas de acceso de la salida Ver>>salida Mostrar salida de: Generar salida, que indica la ubicación de los paquetes de imagen de salida en su PC. Cuando estés listo para crear una implementación, necesitarás conocer las rutas de acceso a los paquetes de imágenes.

  3. De forma predeterminada, la ventana Salida muestra la salida desde Salida de dispositivo. Para ver los mensajes del depurador, seleccione Depurar en el menú desplegable Mostrar salida de: . También puedes inspeccionar el desensamblaje del programa, los registros o la memoria a través del menú Depurar>Windows .

Si tiene dos RTApps, asegúrese de que ambas aparezcan como aplicaciones de asociados en el archivo launch.vs.json de nivel superior.

Use el depurador de Visual Studio para establecer puntos de interrupción, pausar, paso a paso, entrar, reiniciar o detener la aplicación.

Mientras se detiene en un punto de interrupción en el código fuente C, puede abrir una ventana de desensamblaje que muestra la dirección actual, el ensamblador mnemotécnico del comando actual e información como los registros implicados o el comando source-code que se ejecuta.

Para abrir la ventana Desensamblar :

  1. Asegúrese de que el archivo de código fuente de C que contiene el punto de interrupción está abierto en Visual Studio.
  2. Seleccione Depurar>desensamblarWindows> o presione Alt+8.
  1. Abra la carpeta que contiene las aplicaciones de asociados. Visual Studio Code detecta el archivo del área de trabajo y le pregunta si desea abrir el área de trabajo. Selecciona Abrir área de trabajo para abrir la aplicación en tiempo real y la aplicación de alto nivel a la vez.

  2. Haz clic con el botón derecho en cualquiera de los dos archivos CMakeLists.txt y selecciona Crear todos los proyectos.

  3. Haga clic en el icono Ejecutar de la barra de actividad Visual Studio Code.

  4. En el menú desplegable que aparece en la parte superior de la ventana en el lado izquierdo de la pantalla, seleccione Iniciar Azure Sphere Apps (gdb)(área de trabajo).

  5. Presione F5 para compilar y depurar el proyecto. Si el proyecto no se ha creado anteriormente o si los archivos han cambiado y es necesario recompilar, Visual Studio Code creará el proyecto antes de que se inicie la depuración.

  6. Espere varios segundos hasta que Visual Studio Code para crear las aplicaciones, crear los paquetes de imagen, implementarlos en el panel e iniciarlos en modo de depuración. Durante el proceso, verá actualizaciones de estado en el panel Salida .

    En primer lugar, CMake determina si las aplicaciones deben crearse. Si es así, el foco se desplaza a la ventana de salida, que muestra la salida de CMake/Build.

    A continuación, el panel de salida muestra la salida de azsphere cuando implementa el paquete de imagen en el dispositivo. Por último, la consola de depuración recibe el foco y muestra la salida gdb.

Usa el depurador Visual Studio Code para establecer puntos de interrupción, pausar, paso a paso, entrar, reiniciar o detener la aplicación.

Mientras se detiene en un punto de interrupción del código fuente C, puede abrir una vista de desensamblaje que muestra la dirección actual, los datos hexadecimales sin procesar, el ensamblador mnemotécnico del comando actual e información como los registros implicados o el comando de código fuente que se ejecuta.

Para abrir la vista Desensamblar:

  1. Asegúrese de que el archivo de código fuente C que contiene el punto de interrupción está abierto en un editor de Visual Studio Code.
  2. Haga clic con el botón derecho en la ventana del editor y seleccione Abrir vista de desensamblado o seleccione Ver> paleta > decomandosAbrir vista de desensamblaje.
  1. Detener la aplicación en tiempo real si se está ejecutando.

    azsphere device app stop --component-id <component id>
    
  2. Vuelva a iniciar la aplicación compatible con tiempo real con depuración.

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

    Este comando devuelve el núcleo en el que se está ejecutando la aplicación.

      <component id>
      App state   : running
      Core        : Real time 0
    
  3. Vaya a la carpeta Openocd de la sysroot con la que se creó la aplicación. La sysroots se instala en la carpeta de instalación del SDK de Azure Sphere. Por ejemplo, en Windows, la carpeta se instala de forma predeterminada en C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd y en Linux, en /opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux.

  4. Ejecute openocd como se muestra en el ejemplo siguiente. En el ejemplo se supone que la aplicación se ejecuta en el núcleo 0. Si la aplicación se ejecuta en el núcleo 1, reemplaza "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"
    
  5. Abre una interfaz de línea de comandos con PowerShell, símbolo del sistema de Windows o shell de comandos de Linux.

  6. Navega a la carpeta que contiene el archivo .out de la aplicación en tiempo real e inicia arm-none-eabi-gdb, que forma parte del GNU Arm Embedded Toolchain:

    Símbolo del sistema de 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. El servidor OpenOCD proporciona una interfaz de servidor GDB en :4444. Establecer el destino para la depuración.

    target remote :4444

  8. Ahora puede ejecutar comandos gdb. Agregue un punto de interrupción en la función HandleSendTimerDeferred:

    break HandleSendTimerDeferred

  9. El emulador de terminal conectado debe mostrar la salida desde la aplicación compatible en tiempo real.

  10. Abre una nueva ventana del símbolo del sistema de Azure Sphere (Windows) o una ventana de terminal (Linux).

  11. Vaya a la carpeta que contiene el archivo .imagepackage de aplicación de alto nivel.

  12. Si la aplicación se está ejecutando, deténgala y reiníciela con la depuración:

    azsphere device app stop --component-id <ComponentId>
    
    azsphere device app start --debug-mode --component-id <ComponentId>
    
  13. Abra un emulador de terminal y establezca una conexión Telnet o TCP a 192.168.35.2 en el puerto 2342 para ver la salida de la aplicación de alto nivel.

  14. Inicie gdb con el siguiente comando:

    Símbolo del sistema de 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
    

    Nota

    El SDK de Azure Sphere se distribuye con varias sysroots para que las aplicaciones puedan dirigirse a diferentes conjuntos de API, como se describe en La versión en tiempo de ejecución de aplicaciones, sysroots y API beta. La sysroots se instala en la carpeta de instalación azure Sphere SDK en Sysroots.

  15. Establezca el destino de depuración remota en la dirección IP 192.168.35.2 en el puerto 2345:

    target remote 192.168.35.2:2345
    
  16. Agregue un punto de interrupción en la función SendMessageToRTApp:

    break SendMessageToRTApp
    
  17. Escriba c para continuar, observe la salida en su terminal Telnet/TCP y, a continuación, cambie a la ventana del símbolo del sistema o terminal que contiene la sesión de depuración de aplicaciones en tiempo real.

  18. Escribe c para continuar y observar la salida en la sesión serial conectada.

Puede trabajar entre sesiones de depuración, cambiando entre la aplicación compatible con tiempo real y la aplicación de alto nivel. Debería ver una salida similar a la siguiente en las dos ventanas de salida:

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 finalizar cada sesión de depuración, escriba q en el símbolo del sistema gdb.