Gebruik Visual Studio Code om modules te ontwikkelen en fouten op te sporen voor Azure IoT Edge

Van toepassing op:  Ja pictogram IoT Edge 1,1  ja pictogram IOT Edge 1,2

U kunt uw bedrijfslogica in modules voor Azure IoT Edge. In dit artikel wordt beschreven hoe u Visual Studio Code gebruikt als het belangrijkste hulpprogramma voor het ontwikkelen en opsporen van fouten in modules.

Er zijn twee manieren om fouten op te sporen in modules die zijn geschreven in C#, Node.js of Java in Visual Studio Code: u kunt een proces koppelen in een modulecontainer of de modulecode starten in de foutopsporingsmodus. Als u fouten wilt opsporen in modules die zijn geschreven in Python of C, kunt u alleen koppelen aan een proces in Linux amd64-containers.

Als u niet bekend bent met de mogelijkheden voor het debuggen van Visual Studio Code, leest u over Debugging.

Dit artikel bevat instructies voor het ontwikkelen en debuggen van modules in meerdere talen voor meerdere architecturen. Momenteel biedt Visual Studio Code ondersteuning voor modules die zijn geschreven in C#, C, Python, Node.js en Java. De ondersteunde apparaatarchitecten zijn X64 en ARM32. Zie Taal- en architectuurondersteuning voor meer informatie over ondersteunde besturingssystemen, talen en architecturen.

Notitie

Ondersteuning voor ontwikkelen en debuggen voor Linux ARM64-apparaten is in openbare preview. Zie ARM64 IoT Edge-modules ontwikkelen in Visual Studio Code en er fouten in opsporen (preview) voor meer informatie.

Vereisten

U kunt een computer of een virtuele machine met Windows, macOS of Linux gebruiken als uw ontwikkelcomputer. Op Windows computers kunt u modules Windows Linux ontwikkelen. Als u Windows modules wilt ontwikkelen, gebruikt u een Windows computer met versie 1809/build 17763 of hoger. Als u Linux-modules wilt ontwikkelen, gebruikt u Windows computer die voldoet aan de vereisten voor Docker Desktop.

Installeer eerst Visual Studio Code en voeg vervolgens de volgende extensies toe:

U moet ook enkele aanvullende taalspecifieke hulpprogramma's installeren om uw module te ontwikkelen:

Als u de module-afbeelding wilt bouwen en implementeren, hebt u Docker nodig om de module-afbeelding en een containerregister te bouwen voor de module-afbeelding:

Tenzij u uw module in C ontwikkelt, hebt u ook het op Python gebaseerde Azure IoT EdgeHub Dev Tool nodig om uw lokale ontwikkelomgeving in te stellen voor het opsporen, uitvoeren en testen van uw IoT Edge oplossing. Als u dit nog niet hebt gedaan, installeert u Python (2.7/3.6/3.7/3.8) en Pip en installeert u iotedgehubdev door deze opdracht uit te voeren in uw terminal.

pip install --upgrade iotedgehubdev

Notitie

Als u meerdere Python hebt, inclusief vooraf geïnstalleerde python 2.7 (bijvoorbeeld in Ubuntu of macOS), moet u ervoor zorgen dat u de juiste gebruikt of pip pip3 iotedgehubdev installeert

Als u de module op een apparaat wilt testen, hebt u een actieve IoT-hub nodig met ten minste één IoT Edge apparaat. Als u uw computer wilt gebruiken als IoT Edge apparaat, volgt u de stappen in de snelstart voor Linux of Windows. Als u een daemon IoT Edge uw ontwikkelmachine, moet u EdgeHub en EdgeAgent mogelijk stoppen voordat u verder gaat met de volgende stap.

Een nieuwe oplossingssjabloon maken

De volgende stappen laten zien hoe u een IoT Edge-module maakt in uw favoriete ontwikkelingstaal (inclusief Azure Functions, geschreven in C#) met behulp van Visual Studio Code en de Azure IoT Tools. U begint met het maken van een oplossing en vervolgens het genereren van de eerste module in die oplossing. Elke oplossing kan meerdere modules bevatten.

  1. Selecteer > Opdrachtpalet weergeven.

  2. Voer in het opdrachtpalet de opdracht in en voer deze uit Azure IoT Edge: New IoT Edge Solution.

    Nieuwe IoT Edge uitvoeren

  3. Blader naar de map waar u de nieuwe oplossing wilt maken en selecteer vervolgens Map selecteren.

  4. Voer een naam in voor uw oplossing.

  5. Selecteer een modulesjabloon voor de ontwikkeltaal van uw voorkeur als de eerste module in de oplossing.

  6. Voer een naam in voor de module. Kies een naam die uniek is binnen uw containerregister.

  7. Geef de naam op van de opslagplaats voor de afbeelding van de module. Visual Studio Code wordt de modulenaam automatisch met localhost:5000/<de > modulenaam. Vervang deze door uw eigen registergegevens. Als u een lokaal Docker-register gebruikt voor het testen, is localhost prima. Als u een Azure Container Registry, gebruikt u de aanmeldingsserver uit de instellingen van uw register. De aanmeldingsserver ziet er als <registry name> azurecr.io. Vervang alleen het gedeelte localhost:5000 van de tekenreeks zodat het uiteindelijke resultaat eruitziet als <registry name> <your module name> .azurecr.io/.

    Opslagplaats voor Docker-installatiekopieën opgeven

Visual Studio Code gebruikt de informatie die u hebt opgegeven, maakt IoT Edge oplossing en laadt deze in een nieuw venster.

De oplossing heeft vier items:

  • Een vscode-map bevat configuraties voor foutopsporing.

  • Een map modules bevat submappen voor elke module. In de map voor elke module staat een bestand, module.json, dat bepaalt hoe modules worden gebouwd en geïmplementeerd. Dit bestand moet worden gewijzigd om het containerregister van de module-implementatie te wijzigen van localhost in een extern register. Op dit moment hebt u slechts één module. U kunt echter meer toevoegen aan het opdrachtenpalet met de opdracht Azure IoT Edge: Add IoT Edge Module.

  • Een .env-bestand bevat de omgevingsvariabelen. Als Azure Container Registry uw register is, hebt u een Azure Container Registry en wachtwoord in het register.

    In productiescenario's wordt u aangeraden service-principals te gebruiken om toegang te bieden tot uw containerregister in plaats van het .env-bestand. Zie Toegang tot uw containerregister beheren voor meer informatie.

    Notitie

    Het omgevingsbestand wordt alleen gemaakt als u een opslagplaats voor de afbeelding voor de module op geeft. Als u de localhost-standaardwaarden hebt geaccepteerd om lokaal te testen en fouten op te sporen, hoeft u geen omgevingsvariabelen te declaren.

  • In een bestand deployment.template.json wordt de nieuwe module vermeld, samen met een simulatedTemperatureSensor-voorbeeldmodule die gegevens simuleert die u voor het testen kunt gebruiken. Zie Voor meer informatie over hoe implementatiemanifests werken, zie Implementatiemanifestsgebruiken om modules te implementeren en routes vast te stellen.

Bekijk de broncode SimulatedTemperatureSensor.csprojom te zien hoe de gesimuleerde temperatuurmodule werkt.

Een runtime IoT Edge versie instellen

De IoT Edge-extensie wordt standaard ingesteld op de nieuwste stabiele versie van de IoT Edge runtime wanneer uw implementatie-assets worden gemaakt. Op dit moment is versie 1.2 de meest recente stabiele versie. Als u modules ontwikkelt voor apparaten met de versie voor langetermijnondersteuning 1.1 of de eerdere versie van 1.0, moet u de versie van IoT Edge runtime in Visual Studio Code zo bijwerken dat deze overeenkomen.

  1. Selecteer > Opdrachtpalet weergeven.

  2. Voer in het opdrachtpalet de opdracht in en voer deze uit Azure IoT Edge: Stel de standaardinstelling IoT Edge runtimeversie in.

  3. Kies in de lijst de runtimeversie IoT Edge uw apparaten worden uitgevoerd.

Nadat u een nieuwe runtimeversie hebt geselecteerd, wordt uw implementatiemanifest dynamisch bijgewerkt om de wijziging in de installatie van de runtimemodule weer te geven.

Aanvullende modules toevoegen

Als u extra modules wilt toevoegen aan uw oplossing, moet u de opdracht Azure IoT Edge: Add IoT Edge Module from the command palette (Module toevoegen vanuit het opdrachtpalet). U kunt ook met de rechtermuisknop op de map modules of het bestand in de Visual Studio codeverkennerweergave klikken en vervolgens deployment.template.json Toevoegen IoT Edge Module selecteren.

Uw module ontwikkelen

De standaardmodulecode die bij de oplossing wordt geleverd, bevindt zich op de volgende locatie:

  • Azure Function (C#): modules > < > de module de naam > < .cs van uw > module
  • C#: modules > de naam van uw < module > > Program.cs
  • Python: modules > < de naam > van uw module > main.py
  • Node.js: modules > de < naam van > uw module > app.js
  • Java: modules > de < > modulenaam > src > main > java > com > edgemodulemodules > App.java
  • C: modules > de naam van < uw > module > main.c

De module en het bestand deployment.template.json zijn zo ingesteld dat u de oplossing kunt bouwen, deze naar het containerregister kunt pushen en op een apparaat kunt implementeren om te beginnen met testen zonder code aan te raken. De module is gebouwd om invoer van een bron op te halen (in dit geval de module SimulatedTemperatureSensor die gegevens simuleert) en deze door te se pijpen naar IoT Hub.

Wanneer u klaar bent om de sjabloon aan te passen met uw eigen code, gebruikt u de Azure IoT Hub SDK's om modules te bouwen die voldoen aan de belangrijkste behoeften voor IoT-oplossingen, zoals beveiliging, apparaatbeheer en betrouwbaarheid.

Fouten opsporen in een module zonder container (C#, Node.js, Java)

Als u ontwikkelt in C#, Node.js of Java, vereist uw module het gebruik van een ModuleClient-object in de standaardmodulecode, zodat berichten kunnen worden starten, uitgevoerd en gerouteerd. U gebruikt ook het standaardinvoerkanaal input1 om actie te ondernemen wanneer de module berichten ontvangt.

Een simulator IoT Edge instellen

IoT Edge modules hebben een IoT Edge omgeving nodig om uit te voeren en fouten op te sporen. U kunt een IoT Edge simulator op uw ontwikkelmachine gebruiken in plaats van de volledige IoT Edge daemon en runtime uit te voeren. U kunt een apparaat simuleren om fouten op te sporen in oplossingen met meerdere modules of één moduletoepassing simuleren.

Optie 1: een IoT Edge simuleren:

  1. Vouw op het tabblad Explorer aan de linkerkant de sectie Azure IoT Hub uit. Klik met de rechtermuisknop op IoT Edge apparaat-id en selecteer vervolgens Setup IoT Edge Simulator om de simulator te starten met de apparaat-connection string.
  2. U kunt zien welke IoT Edge simulator is ingesteld door de voortgangsdetails in de geïntegreerde terminal te lezen.

Optie 2: een module IoT Edge simuleren:

  1. Voer in Visual Studio Code-opdrachtpalet de opdracht Azure IoT Edge: Start IoT Edge Hub Simulator for Single Module.

  2. Geef de namen op van de invoer die u met uw module wilt testen. Als u de standaardvoorbeeldcode gebruikt, gebruikt u de waarde input1.

  3. De opdracht activeert de iotedgehubdev CLI en start vervolgens de IoT Edge simulator en een modulecontainer voor het testprogramma. U kunt de onderstaande uitvoer bekijken in de geïntegreerde terminal als de simulator is gestart in de modus voor één module. U kunt ook een opdracht curl zien om u te helpen bij het verzenden van berichten. U gebruikt dit later.

    Een simulator IoT Edge één module-app instellen

    U kunt de weergave Docker Explorer in Visual Studio Code gebruiken om de status van de module te zien.

    Status van simulatormodule

    De edgeHubDev-container is de kern van de lokale IoT Edge simulator. Deze kan worden uitgevoerd op uw ontwikkelmachine zonder de IoT Edge-beveiligingsdemon en biedt omgevingsinstellingen voor uw systeemeigen module-app of modulecontainers. De invoercontainer bevat REST API's om berichten te overbruggen met het doelinvoerkanaal in uw module.

Foutopsporingsmodule in de startmodus

Nadat de simulator is gestart, kunt u fouten opsporen in uw modulecode.

  1. Bereid uw omgeving voor op foutopsporing overeenkomstig de vereisten van uw ontwikkelingstaal, stel een onderbrekingspunt in uw module in en selecteer de foutopsporingsconfiguratie die u wilt gebruiken:

    • C#

      • In de Visual Studio Code geïntegreerde terminal wijzigt u de map in de < naammap > van de module en voer vervolgens de volgende opdracht uit om de .NET Core-toepassing te bouwen.

        dotnet build
        
      • Open het bestand Program.cs en voeg een onderbrekingspunt toe.

      • Navigeer naar Visual Studio codefoutopsporingsweergave door het foutopsporingspictogram te selecteren in het menu aan de linkerkant of door te Ctrl+Shift+D typen. Selecteer de foutopsporingsconfiguratie < van > de modulenaam Lokale foutopsporing (.NET Core) in de vervolgkeuzekeuze.

        Notitie

        Als uw .NET Core niet consistent is met het programmapad in , moet u het programmapad in handmatig bijwerken zodat het overeenkomt met het in uw TargetFramework launch.json launch.json .csproj-bestand, zodat Visual Studio Code dit programma kan TargetFramework starten.

    • Node.js

      • Wijzig in Visual Studio code geïntegreerde terminal de map in de map met de naam van uw < module > en voer vervolgens de volgende opdracht uit om Node-pakketten te installeren

        npm install
        
      • Open het bestand app.js en voeg een onderbrekingspunt toe.

      • Navigeer naar Visual Studio codefoutopsporingsweergave door het foutopsporingspictogram te selecteren in het menu aan de linkerkant of door te Ctrl+Shift+D typen. Selecteer de foutopsporingsconfiguratie < van > de modulenaam Lokale foutopsporing (Node.js) in de vervolgkeuzekeuze.

    • Java

      • Open het bestand App.java en voeg een onderbrekingspunt toe.

      • Navigeer naar Visual Studio codefoutopsporingsweergave door het foutopsporingspictogram te selecteren in het menu aan de linkerkant of door te Ctrl+Shift+D typen. Selecteer de foutopsporingsconfiguratie < van > de modulenaam Lokale foutopsporing (Java) in de vervolgkeuzekeuze.

  2. Klik op Foutopsporing starten of druk op F5 om de foutopsporingssessie te starten.

  3. Voer in Visual Studio code geïntegreerde terminal de volgende opdracht uit om een bericht Hallo wereld verzenden naar uw module. Dit is de opdracht die in de vorige stappen wordt weergegeven bij het instellen van IoT Edge simulator.

    curl --header "Content-Type: application/json" --request POST --data '{"inputName": "input1","data":"hello world"}' http://localhost:53000/api/v1/messages
    

    Notitie

    Als u een Windows, moet u ervoor zorgen dat de shell van uw Visual Studio Code integrated terminal Git Bash of WSL Bash is. U kunt de opdracht curl niet uitvoeren vanaf een PowerShell- of opdrachtprompt.

    Tip

    U kunt ook PostMan of andere API-hulpprogramma's gebruiken om berichten via te verzenden in plaats van curl .

  4. In de Visual Studio code foutopsporing ziet u de variabelen in het linkerpaneel.

  5. Als u de debugging-sessie wilt stoppen, selecteert u de knop Stoppen of drukt u op Shift + F5 en vervolgens Azure IoT Edge: Stop IoT Edge Simulator in het opdrachtenpalet om de simulator te stoppen en op te schonen.

Fouten opsporen in de modus koppelen met IoT Edge Simulator (C#, Node.js, Java, Azure Functions)

Uw standaardoplossing bevat twee modules, een is een gesimuleerde temperatuursensormodule en de andere is de pijpmodule. De gesimuleerde temperatuursensor verzendt berichten naar de pijpmodule en vervolgens worden de berichten doorspijpen naar de IoT Hub. In de modulemap die u hebt gemaakt, staan verschillende Docker-bestanden voor verschillende containertypen. Gebruik een van de bestanden die eindigen op de extensie .debug om uw module te bouwen voor testen.

Op dit moment wordt debugging in de attach-modus alleen als volgt ondersteund:

  • C#-modules, inclusief modules voor Azure Functions, ondersteunen foutopsporing in Linux amd64-containers
  • Node.js-modules ondersteunen debuggen in Linux amd64- en arm32v7-containers en Windows amd64-containers
  • Java-modules ondersteunen debuggen in Linux amd64- en arm32v7-containers

Tip

U kunt schakelen tussen opties voor het standaardplatform voor uw IoT Edge oplossing door op het item in de Visual Studio codestatusbalk te klikken.

Een IoT Edge simulator instellen voor IoT Edge oplossing

Op uw ontwikkelmachine kunt u een IoT Edge-simulator starten in plaats van de IoT Edge-beveiligingsdeemon te installeren, zodat u uw IoT Edge uitvoeren.

  1. Vouw op het tabblad Explorer aan de linkerkant de sectie Azure IoT Hub uit. Klik met de rechtermuisknop op IoT Edge apparaat-id en selecteer vervolgens Setup IoT Edge Simulator om de simulator te starten met de apparaat-connection string.

  2. U kunt zien welke IoT Edge simulator is ingesteld door de voortgangsdetails in de geïntegreerde terminal te lezen.

Een container bouwen en uitvoeren voor foutopsporing en foutopsporing in de attach-modus

  1. Open het modulebestand ( Program.cs , , of ) en voeg een app.js App.java <your module name>.cs onderbrekingspunt toe.

  2. Klik in Visual Studio codeverkennerweergave met de rechtermuisknop op het bestand voor uw oplossing en selecteer vervolgens deployment.debug.template.json Build and Run IoT Edge solution in Simulator. U kunt alle modulecontainerlogboeken in hetzelfde venster bekijken. U kunt ook naar de Docker-weergave navigeren om de containerstatus te bekijken.

    Variabelen bekijken

  3. Navigeer naar Visual Studio Code debug-weergave en selecteer het configuratiebestand voor foutopsporing voor uw module. De naam van de foutopsporingsoptie moet vergelijkbaar zijn met < de naam van uw > module Remote Debug

  4. Selecteer Start Debugging of druk op F5. Selecteer het proces waar u aan wilt koppelen.

  5. In Visual Studio code foutopsporingsweergave ziet u de variabelen in het linkerpaneel.

  6. Als u de debugging-sessie wilt stoppen, selecteert u eerst de knop Stoppen of drukt u op Shift + F5 en selecteert u vervolgens Azure IoT Edge: Stop IoT Edge Simulator in het opdrachtpalet.

Notitie

In het voorgaande voorbeeld ziet u hoe u fouten opsport IoT Edge modules op containers. Er zijn poorten aan de containerinstellingen van uw module createOptions toegevoegd. Nadat u klaar bent met het debuggen van uw modules, raden we u aan deze beschikbaar gemaakt poorten te verwijderen voor productie-IoT Edge modules.

Voor modules die zijn geschreven in C#, waaronder Azure Functions, is dit voorbeeld gebaseerd op de foutopsporingsversie van , die het Dockerfile.amd64.debug .NET Core-opdrachtregeldebugger (VSDBG) in uw containerafbeelding bevat tijdens het bouwen ervan. Nadat u fouten in uw C#-modules hebt opsporen, raden we u aan om de Dockerfile zonder VSDBG rechtstreeks te gebruiken voor modules die gereed zijn IoT Edge productie.

Fouten opsporen in een module met IoT Edge runtime

In elke modulemap zijn er verschillende Docker-bestanden voor verschillende containertypen. Gebruik een van de bestanden die eindigen op de extensie .debug om uw module te bouwen voor testen.

Bij het debuggen van modules met behulp van deze methode, worden uw modules uitgevoerd boven op de IoT Edge runtime. Het IoT Edge-apparaat en uw Visual Studio-code kunnen zich op dezelfde computer of normaal gesproken Visual Studio Code op de ontwikkelmachine en de IoT Edge-runtime en -modules worden uitgevoerd op een andere fysieke computer. Als u fouten wilt opsporen in Visual Studio Code, moet u het volgende doen:

  • Stel uw IoT Edge-apparaat in, bouw uw IoT Edge-module(s) met de .debug Dockerfile en implementeer deze vervolgens op IoT Edge apparaat.
  • Maak het IP-adres en de poort van de module weer zodat het debugger kan worden gekoppeld.
  • Werk de launch.json bij zodat Visual Studio code kan worden gekoppeld aan het proces in de container op de externe computer. Dit bestand bevindt zich in de map in uw werkruimte en wordt telkens bijgewerkt wanneer u een nieuwe module toevoegt .vscode die ondersteuning biedt voor debuggen.

Uw module bouwen en implementeren op IoT Edge apparaat

  1. Open Visual Studio Code het bestand dat de foutopsporingsversie van uw deployment.debug.template.json module-afbeeldingen bevat met de juiste createOptions waarden.

  2. Als u uw module in Python ontwikkelt, volgt u deze stappen voordat u doorgaat:

    • Open het bestand main.py en voeg deze code toe na de importsectie:

      import ptvsd
      ptvsd.enable_attach(('0.0.0.0',  5678))
      
    • Voeg de volgende coderegel toe aan de callback die u wilt debuggen:

      ptvsd.break_into_debugger()
      

      Als u bijvoorbeeld fouten in de functie wilt opsporen, voegt u die receive_message_handler regel code in, zoals hieronder wordt weergegeven:

    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")
    
    
  3. In het opdrachtpalet Visual Studio Code:

    1. Voer de opdracht Azure IoT Edge: Build and Push IoT Edge solution.

    2. Selecteer het deployment.debug.template.json bestand voor uw oplossing.

  4. In de Azure IoT Hub apparaten van de Visual Studio codeverkennerweergave:

    1. Klik met de rechtermuisknop op IoT Edge apparaat-id en selecteer implementatie voor één apparaat maken.

      Tip

      Als u wilt controleren of het apparaat dat u hebt gekozen een IoT Edge-apparaat is, selecteert u het om de lijst met modules uit te vouwen en de aanwezigheid van $edgeHub en $edgeAgent. Elk IoT Edge bevat deze twee modules.

    2. Navigeer naar de configuratiemap van uw oplossing, selecteer het deployment.debug.amd64.json bestand en selecteer vervolgens Edge-distributiemanifest selecteren.

U ziet dat de implementatie is gemaakt met een implementatie-id in de geïntegreerde terminal.

U kunt de containerstatus controleren door de opdracht docker ps uit te voeren in de terminal. Als uw Visual Studio code en IoT Edge runtime op dezelfde computer worden uitgevoerd, kunt u ook de status controleren in Visual Studio Code Docker-weergave.

Het IP-adres en de poort van de module voor het debugger blootstellen

U kunt deze sectie overslaan als uw modules worden uitgevoerd op dezelfde computer als Visual Studio Code, omdat u localhost gebruikt om aan de container te koppelen en al de juiste poortinstellingen hebt in het .debug Dockerfile, de containerinstellingen en het bestand van de createOptions launch.json module. Als uw modules en Visual Studio code op afzonderlijke computers worden uitgevoerd, volgt u de stappen voor uw ontwikkelingstaal.

  • C#, inclusief Azure Functions

    Configureer het SSH-kanaal op uw ontwikkelmachine en IoT Edge apparaat en bewerk launch.json vervolgens het bestand dat u wilt koppelen.

  • Node.js

    • Zorg ervoor dat de module op de computer die moet worden foutopsporing wordt uitgevoerd en gereed is voor foutopsporingsopsporing en dat poort 9229 extern toegankelijk is. U kunt dit controleren door te openen http://<target-machine-IP>:9229/json op de machine van het debugger. In deze URL wordt informatie weergegeven over de Node.js-module die moet worden naopsporing.

    • Open Visual Studio Code op uw ontwikkelmachine en bewerk deze zodat de adreswaarde van het profiel voor de launch.json < modulenaam > Remote Debug (Node.js) (of uw < modulenaam > Remote Debug (Node.js in Windows Container)-profiel als de module wordt uitgevoerd als een Windows-container) het IP-adres is van de machine die wordt foutopsporing uitgevoerd.

  • Java

    • Bouw een SSH-tunnel naar de computer om te worden onopspord door uit te laten. ssh -f <username>@<target-machine> -L 5005:127.0.0.1:5005 -N

    • Open op uw ontwikkelmachine Visual Studio Code en bewerk het < > profiel voor de modulenaam Remote Debug (Java) in, zodat u deze kunt koppelen launch.json aan de doelmachine. Zie de sectie over het configureren van launch.json het debuggervoor meer informatie over het bewerken en debuggen van Java met Visual Studio Code.

  • Python

    • Zorg ervoor dat poort 5678 op de computer waar debug moet worden gebruikt, is geopend en toegankelijk is.

    • In de code die u eerder hebt ingevoegd in , wijzigt u ptvsd.enable_attach(('0.0.0.0', 5678)) main.py 0.0.0.0 in het IP-adres van de machine waar u debug in wilt zetten. Bouw, push en implementeer uw IoT Edge module opnieuw.

    • Open op uw ontwikkelmachine Visual Studio Code en bewerk deze zodat de waarde van het Profiel voor foutopsporing op afstand launch.json host < > (Python) van de module het IP-adres van de doelmachine gebruikt in plaats van localhost .

Fouten opsporen in uw module

  1. Selecteer in Visual Studio Code Debug-weergave het configuratiebestand voor foutopsporing voor uw module. De naam van de foutopsporingsoptie moet vergelijkbaar zijn met < de naam van uw > module Remote Debug

  2. Open het modulebestand voor uw ontwikkelingstaal en voeg een onderbrekingspunt toe:

    • Azure Function (C#): Voeg uw onderbrekingspunt toe aan het bestand <your module name>.cs .
    • C#: Voeg uw onderbrekingspunt toe aan het bestand Program.cs .
    • Node.js: Voeg uw onderbrekingspunt toe aan het bestand app.js .
    • Java: Voeg uw onderbrekingspunt toe aan het bestand App.java .
    • Python: voeg uw onderbrekingspunt toe aan het bestand main.py in de callback-methode waar u de regel hebt ptvsd.break_into_debugger() toegevoegd.
    • C: Voeg uw onderbrekingspunt toe aan het bestand main.c .
  3. Selecteer Start Debugging of selecteer F5. Selecteer het proces waar u aan wilt koppelen.

  4. In de Visual Studio Code Debug ziet u de variabelen in het linkerpaneel.

Notitie

In het voorgaande voorbeeld ziet u hoe u fouten opsport IoT Edge modules op containers. Er zijn poorten aan de containerinstellingen van uw module createOptions toegevoegd. Nadat u klaar bent met het debuggen van uw modules, raden we u aan deze beschikbaar gemaakt poorten te verwijderen voor productie-IoT Edge modules.

Een module op afstand bouwen en fouten opsporen

Met recente wijzigingen in zowel de Docker- als Moby-engines ter ondersteuning van SSH-verbindingen en een nieuwe instelling in Azure IoT Tools waarmee omgevingsinstellingen kunnen worden injectie in het opdrachtpalet van Visual Studio Code en Azure IoT Edge terminals, kunt u nu modules bouwen en fouten opsporen op externe apparaten.

Zie dit IoT Developer-blogbericht voor meer informatie en stapsgewijse instructies.

Volgende stappen

Nadat u uw module hebt gebouwd, leert u hoe u de modules Azure IoT Edge implementeren vanuit Visual Studio Code.

Als u modules wilt ontwikkelen voor uw IoT Edge apparaten, moet u de SDK'Azure IoT Hub begrijpen en gebruiken.