Uso de Visual Studio Code para desarrollar y depurar módulos para Azure IoT Edge
Se aplica a:
IoT Edge 1.1
IoT Edge 1.2
Puede convertir la lógica de negocios en módulos de Azure IoT Edge. En este artículo se muestra cómo usar Visual Studio Code como herramienta principal para desarrollar y depurar módulos.
Hay dos maneras de depurar los módulos escritos en C#, Node.js o Java en Visual Studio Code: Puede agregar un proceso a un contenedor de módulo o iniciar el código del módulo en modo de depuración. Para depurar los módulos escritos en Python o C, solo puede agregar un proceso en contenedores de Linux amd64.
Si no está familiarizado con las funcionalidades de depuración de Visual Studio Code, consulte más información sobre depuración.
En este artículo se proporcionan instrucciones para desarrollar y depurar módulos en varios lenguajes y para varias arquitecturas. Actualmente, Visual Studio Code proporciona compatibilidad con módulos escritos en C#, C, Python, node.js y Java. Las arquitecturas de dispositivo compatibles son X64 y ARM32. Para obtener más información sobre los sistemas operativos, los lenguajes y las arquitecturas compatibles, consulte Compatibilidad de lenguaje y arquitectura.
Nota
El soporte técnico del desarrollo y depuración para dispositivos ARM64 de Linux está en versión preliminar pública. Para más información, consulte Desarrollo y depuración de módulos ARM64 IoT Edge en Visual Studio Code (versión preliminar).
Requisitos previos
Puede usar un equipo o máquina virtual con Windows, macOS o Linux como equipo de desarrollo. En equipos Windows, puede desarrollar módulos de Windows o Linux. Para desarrollar módulos de Windows, use un equipo Windows que ejecute la versión 1809, la compilación 17763 o una más reciente. Para desarrollar módulos de Linux, use un equipo Windows que cumpla los requisitos de Docker Desktop.
Instale Visual Studio Code y después agregue las siguientes extensiones:
- Herramientas de Azure IoT
- Extensión de Docker
- Extensiones de Visual Studio específicas del lenguaje en el que esté desarrollando:
- C#, incluyendo Azure Functions: Extensión de C#
- Python: Extensión de Python
- Java: Paquete de extensiones de Java para Visual Studio Code
- C. Extensión de C/C++
También deberá instalar algunas herramientas específicas del lenguaje adicionales para desarrollar el módulo:
C#, incluido Azure Functions: SDK de .NET Core 2.1
Python: Python y Pip para instalar paquetes de Python (normalmente, se incluye con la instalación de Python).
Node.js: Node.js. También le interesará instalar Yeoman y el generador de módulo Node.js de Azure IoT Edge.
Java: Java SE Development Kit 10 y Maven. Deberá establecer la
JAVA_HOMEvariable de entorno para que apunte a la instalación de JDK.
Para compilar e implementar la imagen del módulo, necesita Docker para compilar la imagen del módulo y un registro de contenedor para guardarla:
Docker Community Edition en la máquina de desarrollo
Azure Container Registry o Docker Hub
Sugerencia
Puede usar un registro de Docker local con fines de prototipo y prueba en lugar de un registro en la nube.
A menos que esté desarrollando el módulo en C, también necesitará la herramienta de desarrollo de Azure IoT EdgeHub basada en Python con el fin de configurar el entorno de desarrollo local para depurar, ejecutar y probar la solución de IoT Edge. Si aún no lo ha hecho, instale Python (2.7/3.6/3.7/3.8) y Pip y después iotedgehubdev mediante la ejecución de este comando en el terminal.
pip install --upgrade iotedgehubdev
Nota
Si tiene varias versiones de Python, incluida la versión Python 2.7 preinstalada (por ejemplo, en Ubuntu o macOS), asegúrese de que usa los valores pip o pip3 correctos para instalar iotedgehubdev.
Para probar el módulo en un dispositivo, necesitará una instancia de IoT Hub con al menos un dispositivo IoT Edge. Para usar el equipo como un dispositivo IoT Edge, siga los pasos descritos en el inicio rápido para Linux o Windows. Si ejecuta el demonio de IoT Edge en el equipo de desarrollo, es posible que deba detener EdgeHub y EdgeAgent antes de ir al paso siguiente.
Creación de una plantilla de solución
En los siguientes pasos se muestra cómo crear un módulo de IoT Edge en su lenguaje de desarrollo preferido (incluido Azure Functions, escrito en C#) mediante Visual Studio Code y Herramientas de Azure IoT. Primero debe crear una solución y, a continuación, generar el primer módulo de esa solución. Cada solución puede contener varios módulos.
Seleccione Ver > Paleta de comandos.
En la paleta de comandos, escriba y ejecute el comando Azure IoT Edge: New IoT Edge solution (Nueva solución de IoT Edge).

Vaya a la carpeta en la que desea crear la solución y después haga clic en Seleccionar carpeta.
Escriba un nombre para la solución.
Seleccione una plantilla de módulo para que su lenguaje de desarrollo preferido sea el primer módulo de la solución.
Escriba un nombre para el módulo. Elija un nombre que sea único dentro del registro de contenedor.
Proporcione el nombre del repositorio de imágenes del módulo. Visual Studio Code completa automáticamente el nombre del módulo como localhost:5000 /<el nombre del módulo> . Reemplácelo por su propia información de registro. Si usa un registro de Docker local para realizar pruebas, localhost puede valer. Si va a usar Azure Container Registry, utilice el servidor de inicio de sesión de la configuración del registro. El servidor de inicio de sesión se parece a <registry name> .azurecr.io. Reemplace solo la sección localhost:5000 de la cadena para que el resultado final se parezca a <registry name>.azurecr.io/ <your module name>.

Visual Studio Code toma la información que le ha proporcionado, crea una solución IoT Edge y la carga en una nueva ventana.
Hay cuatro elementos dentro de la solución:
Una carpeta .vscode que contiene configuraciones de depuración.
Una carpeta modules que contiene subcarpetas para cada módulo. Dentro de la carpeta de cada módulo hay un archivo, module.json, que controla cómo se compilan e implementan los módulos. Es necesario modificar este archivo para cambiar el registro del contenedor de la implementación del módulo de localhost a un registro remoto. En este momento, solo tiene un módulo. Sin embargo, podría agregar más en la paleta de comandos con el comando Azure IoT Edge: Add IoT Edge Module (Azure IoT Edge: agregar módulo IoT Edge).
Un archivo .env enumera las variables de entorno. Si Azure Container Registry es su registro, tendrá en él un nombre de usuario y una contraseña de Azure Container Registry.
En escenarios de producción, se recomienda usar entidades de servicio para proporcionar acceso al registro de contenedor en lugar del archivo .env. Para más información, consulte Administración del acceso al registro de contenedor.
Nota
Solo se crea el archivo de entorno si proporciona un repositorio de imágenes para el módulo. Si aceptó los valores predeterminados de localhost para probar y depurar localmente, no es necesario declarar las variables de entorno.
Un archivo deployment.template.json muestra el nuevo módulo junto con un módulo SimulatedTemperatureSensor de ejemplo que simula los datos que puede usar para las pruebas. Para más información sobre cómo funcionan los manifiestos de implementación, consulte cómo usar los manifiestos de implementación para implementar módulos y establecer rutas.
Para ver cómo funciona el módulo de temperatura simulada, vea el código fuente de SimulatedTemperatureSensor.csproj.
Establecimiento de la versión del entorno de ejecución de IoT Edge
La extensión de IoT Edge adopta como predeterminada la versión estable más reciente del entorno de ejecución de IoT Edge cuando crea los recursos de implementación. Actualmente, esta versión es la 1.2. Si va a desarrollar módulos para dispositivos que ejecutan la versión de compatibilidad a largo plazo 1.1 o la versión 1.0 anterior, actualice la versión del entorno de ejecución de IoT Edge en Visual Studio Code para que coincidan.
Seleccione Ver > Paleta de comandos.
En la paleta de comandos, escriba el comando Azure IoT Edge: Set default IoT Edge runtime version (Azure IoT Edge: Establecer la versión predeterminada del entorno de ejecución de IoT Edge) y ejecútelo.
En la lista, elija la versión del entorno de ejecución que ejecutan los dispositivos IoT Edge.
Después de seleccionar una nueva versión del entorno de ejecución, el manifiesto de implementación se actualiza dinámicamente para reflejar el cambio en las imágenes del módulo del entorno de ejecución.
Agregar módulos adicionales
Para agregar módulos adicionales a la solución, ejecute el comando Azure IoT Edge: Add IoT Edge Module (Azure IoT Edge: Agregar módulo IoT Edge) desde la paleta de comandos. También puede hacer clic en la carpeta módulos o el archivo deployment.template.json en la vista Explorador de Visual Studio Code y después seleccionar Agregar módulo IoT Edge.
Desarrollo de su módulo
El código del módulo predeterminado que se incluye con la solución se encuentra en la siguiente ubicación:
- Azure Function (C#): módulos > <el nombre del módulo> > <el nombre del módulo> .cs
- C#: módulos > <el nombre del módulo> > Program.cs
- Python: módulos > <el nombre del módulo> > main.py
- Node.js: módulos > <el nombre del módulo> > app.js
- Java: módulos > <el nombre del módulo> > src > main > java > com > edgemodulemodules > App.java
- C: módulos > <el nombre del módulo> > main.c
El módulo y el archivo deployment.template.json se configuran para que pueda compilar la solución, insertarla en el registro de contenedor e implementarla en un dispositivo para iniciar la prueba sin tocar el código. El módulo se compila para recibir entradas de un origen (en este caso, el módulo SimulatedTemperatureSensor que simula datos) y canalizarlo a IoT Hub.
Cuando tenga todo listo para personalizar la plantilla de C con su propio código, use los SDK de Azure IoT Hub para compilar módulos que aborden las necesidades principales de las soluciones de IoT, como seguridad, administración de dispositivos y confiabilidad.
Depurar un módulo sin un contenedor (C#, Node.js, Java)
Si está desarrollando en C#, Node.js o Java, el módulo requiere el uso de un objeto ModuleClient en el código del módulo predeterminado para poder iniciar, ejecutar y enrutar los mensajes. También usará el canal de entrada predeterminado input1 para realizar una acción cuando el módulo reciba los mensajes.
Configuración de un simulador IoT Edge
Los módulos de IoT Edge necesitan un entorno IoT Edge para ejecutar y depurar. Puede usar un simulador de IoT Edge en la máquina de desarrollo en lugar de ejecutar el tiempo de ejecución y el demonio de seguridad de IoT Edge completos. Puede simular un dispositivo para depurar soluciones con varios módulos o simular una sola aplicación de módulo.
Opción 1: simular una solución IoT Edge.
- En la pestaña Explorador del lado izquierdo, expanda la sección Azure IoT Hub. Haga clic con el botón derecho en el identificador del dispositivo IoT Edge y después seleccione Setup IoT Edge Simulator (Configurar el simulador de IoT Edge) para iniciar el simulador con la cadena de conexión del dispositivo.
- Puede ver que el simulador de IoT Edge se ha configurado correctamente leyendo la información de progreso en el terminal integrado.
Opción 2: simular un único módulo de IoT Edge.
En la paleta de comandos de Visual Studio Code, ejecute el comando Azure IoT Edge: Start IoT Edge Hub Simulator for Single Module (Azure IoT Edge: Iniciar el simulador de centro de IoT Edge para módulo único).
Proporcione los nombres de las entradas que quiera probar con el módulo. Si usa el código de ejemplo predeterminado, use el valor input1.
El comando desencadena la CLI iotedgehubdev y después inicia el simulador de IoT Edge y un contenedor de módulo de herramienta para pruebas. Puede ver las siguientes salidas en el terminal integrado si el simulador se ha iniciado correctamente en modo de módulo único. También puede ver un comando
curlpara ayudar a enviar el mensaje. Lo usará más adelante.
Puede usar la vista Explorador de Docker en Visual Studio Code para ver el estado de ejecución del módulo.

El contenedor edgeHubDev es el núcleo del simulador de IoT Edge local. Puede ejecutarse en el equipo de desarrollo sin el demonio de seguridad de IoT Edge y proporcionar la configuración del entorno para la aplicación de módulo nativa o los contenedores de módulo. El contenedor de entrada expone las API REST para ayudar a que los mensajes lleguen al canal de entrada de destino en el módulo.
Depuración del módulo en el modo de inicio
Una vez que el simulador se haya iniciado correctamente, puede depurar el código del módulo.
Prepare el entorno de depuración según los requisitos de su lenguaje de desarrollo, establezca un punto de interrupción en el módulo y seleccione la configuración de depuración para usar:
C#
En el terminal integrado de Visual Studio Code, cambie el directorio a la carpeta con su <nombre de módulo> y después ejecute el siguiente comando para compilar la aplicación de .Net Core.
dotnet buildAbra el archivo
Program.csy agregue un punto de interrupción.Vaya a la vista Depuración de Visual Studio Code seleccionando el icono de depuración en el menú de la izquierda o escribiendo
Ctrl+Shift+D. Seleccione la configuración de depuración <nombre del módulo> Local Debug (.NET Core) en la lista desplegable.Nota
Si su
TargetFrameworkde .Net Core no es coherente con la ruta de acceso del programa enlaunch.json, deberá actualizar manualmente la ruta de acceso del programa enlaunch.jsonpara que coincida con elTargetFrameworken el archivo .csproj para que Visual Studio Code pueda iniciar correctamente este programa.
Node.js
En el terminal integrado de Visual Studio Code, cambie el directorio a la carpeta <nombre del módulo> y después ejecute el siguiente comando para instalar paquetes Node.
npm installAbra el archivo
app.jsy agregue un punto de interrupción.Vaya a la vista Depuración de Visual Studio Code seleccionando el icono de depuración en el menú de la izquierda o escribiendo
Ctrl+Shift+D. Seleccione la configuración de depuración <nombre del módulo> Local Debug (Node.js) en la lista desplegable.
Java
Abra el archivo
App.javay agregue un punto de interrupción.Vaya a la vista Depuración de Visual Studio Code seleccionando el icono de depuración en el menú de la izquierda o escribiendo
Ctrl+Shift+D. Seleccione la configuración de depuración <nombre del módulo> Local Debug (Java) en la lista desplegable.
Haga clic en Iniciar depuración o presione F5 para iniciar la sesión de depuración.
En el terminal integrado de Visual Studio Code, ejecute el siguiente comando para enviar un mensaje de Hola mundo al módulo. Este es el comando que se mostró en pasos anteriores cuando configuró el simulador de IoT Edge.
curl --header "Content-Type: application/json" --request POST --data '{"inputName": "input1","data":"hello world"}' http://localhost:53000/api/v1/messagesNota
Si usa Windows, asegúrese de que el shell del terminal integrado de Visual Studio Code es Git Bash o WSL Bash. No puede ejecutar el comando
curlen PowerShell ni desde el símbolo del sistema.Sugerencia
También puede usar PostMan u otras herramientas de API para enviar mensajes en lugar de
curl.En la vista Depuración de Visual Studio Code, verá las variables en el panel izquierdo.
Para detener la sesión de depuración, haga clic en el botón Detener o presione MAYÚS + F5 y después ejecute Azure IoT Edge: Stop IoT Edge Simulator (Azure IoT Edge: Detener el simulador de IoT Edge) en la paleta de comandos para detener el simulador y limpiar.
Depuración en modo de agregación con el simulador de IoT Edge (C#, Node.js, Java, Azure Functions)
La solución predeterminada contiene dos módulos, uno es un módulo de sensor de temperatura simulado y el otro es el módulo de canalización. El sensor de temperatura simulado manda mensajes al módulo de canalización, y después los mensajes se canalizan a IoT Hub. En la carpeta de módulo que se creó, hay varios archivos de Docker para diferentes tipos de contenedor. Use cualquiera de estos archivos que acaban con la extensión .debug para compilar el módulo de pruebas.
Actualmente, la depuración en modo de agregación solo es compatible como sigue:
- Los módulos de C#, incluyendo los de Azure Functions, admiten la depuración en contenedores de Linux amd64
- Los módulos de Node.js admiten la depuración en contenedores de Linux amd64 y arm32v7, y en contenedores de Windows amd64
- Los módulos de Java admiten la depuración en contenedores de Linux amd64 y arm32v7
Sugerencia
Puede cambiar las opciones de la plataforma predeterminada para la solución de IoT Edge si hace clic en el elemento en la barra de estado de Visual Studio Code.
Configuración del simulador de IoT Edge para la solución de IoT Edge
En el equipo de desarrollo, puede iniciar un simulador de IoT Edge en lugar de instalar el demonio de seguridad de IoT Edge de forma que pueda ejecutar la solución de IoT Edge.
En la pestaña Explorador del lado izquierdo, expanda la sección Azure IoT Hub. Haga clic con el botón derecho en el identificador del dispositivo IoT Edge y después seleccione Setup IoT Edge Simulator (Configurar el simulador de IoT Edge) para iniciar el simulador con la cadena de conexión del dispositivo.
Puede ver que el simulador de IoT Edge se ha configurado correctamente leyendo la información de progreso en el terminal integrado.
Compilación y ejecución del contenedor para la depuración y depuración en modo de agregación
Abra el archivo de módulo (
Program.cs,app.js,App.javao<your module name>.cs) y agregue un punto de interrupción.En la vista Explorador de Visual Studio Code, haga clic con el botón derecho en el archivo
deployment.debug.template.jsonpara la solución y después seleccione Compilar y ejecutar solución de IoT Edge en el Simulador. Puede inspeccionar todos los registros del contenedor del módulo en la misma ventana. También puede navegar hasta la vista Docker para observar el estado del contenedor.
Vaya a la vista Depuración de Visual Studio Code y seleccione el archivo de configuración de depuración del módulo. El nombre de la opción de depuración debe ser similar a <nombre del módulo> Remote Debug
Haga clic en Iniciar depuración o presione F5. Seleccione el proceso al que desea asociarlo.
En la vista Depuración de Visual Studio Code, verá las variables en el panel izquierdo.
Para detener la sesión de depuración, primero haga clic en el botón Detener o presione MAYÚS + F5, y después ejecute Azure IoT Edge: Stop IoT Edge Simulator (Azure IoT Edge: Detener módulo IoT Edge) desde la paleta de comandos.
Nota
En el ejemplo anterior se muestra cómo depurar módulos de IoT Edge en contenedores. Ha agregado puertos expuestos a la configuración createOptions del contenedor del módulo. Una vez finalizada la depuración de los módulos, se recomienda quitar estos puertos expuestos de los módulos de IoT Edge listos para entornos de producción.
Para módulos escritos en C#, incluyendo los de Azure Functions, este ejemplo se basa en la versión de depuración de Dockerfile.amd64.debug, que incluye el depurador de línea de comandos de .NET Core (VSDBG) en la imagen de contenedor al realizar la compilación. Una vez finalizada la depuración de los módulos de C#, se recomienda usar directamente Dockerfile sin VSDBG para módulos de IoT Edge listos para producción.
Depuración de un módulo con el entorno de tiempo de ejecución de IoT Edge
En cada carpeta de módulo, hay varios archivos de Docker para diferentes tipos de contenedor. Use cualquiera de estos archivos que acaban con la extensión .debug para compilar el módulo de pruebas.
Al depurar los módulos con este método, los módulos se ejecutan sobre el entorno de ejecución de IoT Edge. El dispositivo de IoT Edge y Visual Studio Code pueden estar en la misma máquina, o como es más habitual, Visual Studio Code se encuentra en el equipo de desarrollo y el entorno de tiempo de ejecución y los módulos de IoT Edge se ejecutan en otro equipo físico. Para depurar desde Visual Studio Code, debe:
- Configurar el dispositivo de IoT Edge, compilar módulos de IoT Edge con el Dockerfile .debug y, después, implementar en el dispositivo de IoT Edge.
- Exponer la dirección IP y el puerto del módulo para adjuntar el depurador.
- Actualiza el archivo
launch.jsonpara que Visual Studio Code pueda adjuntarse al proceso del contenedor en el equipo remoto. Este archivo se encuentra en la carpeta.vscodedel área de trabajo y se actualiza cada vez que agrega un nuevo módulo que admite la depuración.
Compilación e implementación del módulo en el dispositivo de IoT Edge
En Visual Studio Code, abra el archivo
deployment.debug.template.json, que contiene la versión de depuración de las imágenes del módulo con valores decreateOptionsadecuados establecidos.Si está desarrollando su módulo de Python, siga estos pasos antes de continuar:
Abra el archivo
main.pyy agregue este código después de la sección de importación:import ptvsd ptvsd.enable_attach(('0.0.0.0', 5678))Agregue la siguiente línea de código única a la devolución de llamada que quiera depurar:
ptvsd.break_into_debugger()Por ejemplo, si quiere depurar la función
receive_message_handler, insertaría esa línea de código tal como se muestra a continuación:
def receive_message_handler(message): ptvsd.break_into_debugger() global RECEIVED_MESSAGES RECEIVED_MESSAGES += 1 if message.input_name == "input1": print("Message received on input1") print( " Data: <<{}>>".format(message.data) ) print( " Properties: {}".format(message.custom_properties)) print( " Total calls received: {}".format(RECEIVED_MESSAGES)) print("Forwarding message to output1") client.send_message_to_output(message, "output1") print("Message successfully forwarded")En la paleta de comandos de Visual Studio Code:
Ejecute el comando Azure IoT Edge: Build and Push IoT Edge solution (Azure IoT Edge: Compilación e inserción de la solución de IoT Edge) .
Seleccione el archivo
deployment.debug.template.jsonpara su solución.
En la sección Azure IoT Hub Devices (Dispositivos de Azure IoT Hub) de la vista Explorador de Visual Studio Code:
Haga clic con el botón derecho en un Id. de dispositivo de IoT Edge y seleccione Create Deployment for IoT Edge device (Crear una implementación para un dispositivo individual).
Sugerencia
Para confirmar que el dispositivo que ha elegido es un dispositivo IoT Edge, selecciónelo para expandir la lista de módulos y comprobar la presencia de $edgeHub y $edgeAgent. Todos los dispositivos IoT Edge incluyen estos dos módulos.
Vaya a la carpeta config de la solución, seleccione el archivo
deployment.debug.amd64.jsony haga clic en Select Edge Deployment Manifest (Seleccionar manifiesto de implementación de Edge).
Verá que la implementación se ha creado correctamente con un identificador de implementación en el terminal integrado.
Puede comprobar el estado del contenedor mediante la ejecución del comando docker ps en el terminal. Si el entorno de tiempo de ejecución de IoT Edge y Visual Studio Code se ejecutan en el mismo equipo, también puede comprobar el estado en la vista de Docker de Visual Studio Code.
Exposición de la dirección IP y el puerto del módulo para el depurador
Puede omitir esta sección si los módulos se ejecutan en el mismo equipo que Visual Studio Code, ya que está usando localhost para adjuntar al contenedor y ya tiene la configuración de puerto correcta en el Dockerfile .debug, en la configuración createOptions del contenedor del módulo y en el archivo launch.json. Si los módulos y Visual Studio Code se ejecutan en máquinas independientes, siga los pasos de su lenguaje de desarrollo.
C#, incluyendo Azure Functions
Configure el canal SSH en el equipo de desarrollo y el dispositivo de IoT Edge y, después, edite el archivo
launch.jsonpara adjuntar.Node.js
Asegúrese de que el módulo en el equipo que se va a depurar está ejecutándose y está listo para adjuntar los depuradores, y de que el puerto 9229 es accesible externamente. Puede comprobarlo abriendo
http://<target-machine-IP>:9229/jsonen la máquina que se va a depurar. Esta dirección URL debe mostrar información sobre el módulo Node.js que se quiere depurar.En el equipo de desarrollo, abra Visual Studio Code y, después, edite el archivo
launch.jsonpara que el valor de la dirección del perfil <nombre del módulo> Remote Debug (Node.js) (o el perfil <nombre del módulo> Remote Debug [Node js en un contenedor Windows] si el módulo se está ejecutando como un contenedor Windows) sea la dirección IP de la máquina que se va a depurar.
Java
Compile un túnel SSH para la máquina que se quiere depurar con la ejecución de
ssh -f <username>@<target-machine> -L 5005:127.0.0.1:5005 -N.En el equipo de desarrollo, abra Visual Studio Code y edite el perfil <nombre del módulo> Remote Debug (Java) en
launch.jsonpara que pueda adjuntar al equipo de destino. Para más información sobre cómo editarlaunch.jsony depurar Java con Visual Studio Code, consulte la sección sobre cómo configurar el depurador.
Python
Asegúrese de que el puerto 5678 del equipo que se va a depurar está abierto y es accesible.
En el código
ptvsd.enable_attach(('0.0.0.0', 5678))que insertó anteriormente enmain.py, cambie 0.0.0.0 a la dirección IP de la máquina que quiere depurar. Compile, inserte y vuelva a implementar los módulos de IoT Edge.En el equipo de desarrollo, abra Visual Studio Code y, después, edite
launch.jsonpara que el valorhostdel perfil <nombre del módulo> Remote Debug (Python) use la dirección IP de la máquina de destino en lugar delocalhost.
Depuración del módulo
En la vista Depuración de Visual Studio Code seleccione el archivo de configuración de depuración del módulo. El nombre de la opción de depuración debe ser similar a <nombre del módulo> Remote Debug
Abra el archivo del módulo para su lenguaje de desarrollo y agregue un punto de interrupción:
- Azure Function (C#) : agregue el punto de interrupción en el archivo
<your module name>.cs. - C# : agregue el punto de interrupción en el archivo
Program.cs. - Node.js: agregue el punto de interrupción en el archivo
app.js. - Java: agregue el punto de interrupción en el archivo
App.java. - Python: agregue el punto de interrupción al archivo
main.pyen el método de devolución de llamada donde agregó la líneaptvsd.break_into_debugger(). - C: agregue el punto de interrupción en el archivo
main.c.
- Azure Function (C#) : agregue el punto de interrupción en el archivo
Seleccione Iniciar depuración o presione F5. Seleccione el proceso al que desea asociarlo.
En la vista Depuración de Visual Studio Code, verá las variables en el panel izquierdo.
Nota
En el ejemplo anterior se muestra cómo depurar módulos de IoT Edge en contenedores. Ha agregado puertos expuestos a la configuración createOptions del contenedor del módulo. Una vez finalizada la depuración de los módulos, se recomienda quitar estos puertos expuestos de los módulos de IoT Edge listos para entornos de producción.
Compilación y depuración de un módulo de forma remota
Con los recientes cambios en los motores de Docker y Moby para admitir conexiones SSH y una nueva configuración de las herramientas de Azure IoT que permite la inyección de configuración de entorno en la paleta de comandos de Visual Studio Code y en los terminales de Azure IoT Edge, ahora puede compilar y depurar módulos en dispositivos remotos.
Consulte la entrada del blog para desarrolladores de IoT para obtener más información e instrucciones paso a paso.
Pasos siguientes
Después de compilar el módulo, aprenda cómo implementar módulos de Azure IoT Edge desde Visual Studio Code.
Para desarrollar módulos para los dispositivos IoT Edge, consulte Información y uso de los SDK de Azure IoT Hub.