Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: IoT Edge 1.5
Belangrijk
IoT Edge 1.5 LTS is de ondersteunde release. IoT Edge 1.4 LTS is het einde van de levensduur vanaf 12 november 2024. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.
In dit artikel wordt uitgelegd hoe u Visual Studio Code gebruikt voor het opsporen van fouten in IoT Edge-modules in meerdere talen. Gebruik Visual Studio Code op uw ontwikkelcomputer om uw module te koppelen en fouten op te sporen in een lokale of externe modulecontainer.
Dit artikel bevat stappen voor twee IoT Edge-ontwikkelhulpprogramma's.
- Azure IoT Edge Dev Tool - opdrachtregelprogramma (CLI). Dit hulpprogramma heeft de voorkeur voor ontwikkeling.
- Azure IoT Edge-hulpprogramma's voor Visual Studio Code-extensie . De extensie bevindt zich in de onderhoudsmodus.
Selecteer de versie van het hulpprogramma met behulp van de knop toolkiezer aan het begin van dit artikel.
Visual Studio Code ondersteunt het schrijven van IoT Edge-modules in de volgende programmeertalen:
- C# en C# Azure Functions
- E
- Python
- Node.js
- Java
Azure IoT Edge werkt met deze apparaatarchitecturen:
- AMD64
- ARM32v7
- ARM64
Zie taal- en architectuurondersteuning voor meer informatie over ondersteunde besturingssystemen, talen en architecturen.
Wanneer u de Visual Studio Code IoT Edge-extensie gebruikt, kunt u ook de modulecode starten en fouten opsporen in de IoT Edge-simulator.
U kunt ook een Windows-ontwikkelcomputer en foutopsporingsmodules in een Linux-container gebruiken met Behulp van IoT Edge voor Linux in Windows (EFLOW). Zie zelfstudie: IoT Edge-modules ontwikkelen met Linux-containers met Behulp van IoT Edge voor Linux in Windows voor meer informatie over het gebruik van EFLOW voor het ontwikkelen van modules.
Als u geen toegang hebt tot de mogelijkheden voor foutopsporing van Visual Studio Code, raadpleegt u Foutopsporing in Visual Studio Code.
Vereisten
U kunt een computer of een virtuele machine met Windows, macOS of Linux gebruiken als uw ontwikkelcomputer. Op Windows-computers kunt u Windows- of Linux-modules ontwikkelen. Als u Linux-modules wilt ontwikkelen, gebruikt u een Windows-computer die voldoet aan de vereisten voor Docker Desktop.
Voltooi de zelfstudie Azure IoT Edge-modules ontwikkelen met behulp van Visual Studio Code om de vereiste hulpprogramma's voor ontwikkeling en foutopsporing te installeren.
Installeer Visual Studio Code.
Voeg deze extensies toe:
- Azure IoT Edge-extensie . De Azure IoT Edge-hulpprogramma's voor de Visual Studio Code-extensie bevindt zich in de onderhoudsmodus.
- Azure IoT Hub-extensie .
Als u fouten in uw module op een apparaat wilt opsporen, hebt u het volgende nodig:
- Een actieve IoT Hub met ten minste één IoT Edge-apparaat.
- Een fysiek IoT Edge-apparaat of een virtueel apparaat. Maak een virtueel apparaat in Azure door de stappen in de quickstart voor Linux te volgen.
- Een aangepaste IoT Edge-module. Als u een aangepaste module wilt maken, volgt u de stappen in de zelfstudie Azure IoT Edge-modules ontwikkelen met behulp van Visual Studio Code .
Fouten opsporen zonder een container met behulp van de IoT Edge-simulator
De IoT Edge-simulator is een hulpprogramma dat wordt uitgevoerd op uw ontwikkelcomputer en het gedrag van één IoT Edge-apparaat simuleert. U kunt de IoT Edge-simulator gebruiken om uw IoT Edge-modules te ontwikkelen en te testen zonder een fysiek apparaat of een volledige Runtime van een IoT Edge-apparaat.
Bij de volgende foutopsporingsstappen wordt ervan uitgegaan dat u al een aangepaste module hebt gemaakt. Als u nog geen aangepaste module hebt gemaakt, volgt u de stappen in de zelfstudie Azure IoT Edge-modules ontwikkelen met behulp van Visual Studio Code .
Foutopsporing van een module zonder container is niet beschikbaar bij het gebruik van C of Python.
Fouten opsporen in de bijlagemodus met behulp van ioT Edge-simulator
Foutopsporing in de bijlagemodus is niet beschikbaar voor C of Python.
Fouten opsporen in een module met de IoT Edge-runtime
Elke modulemap bevat verschillende Docker-bestanden voor verschillende containertypen. Gebruik een bestand dat eindigt met de extensie .debug om uw module te bouwen voor testen.
Wanneer u fouten in modules opssport met deze methode, worden uw modules uitgevoerd boven op de IoT Edge-runtime. Het IoT Edge-apparaat en Visual Studio Code kunnen op dezelfde computer worden uitgevoerd, maar meestal wordt Visual Studio Code uitgevoerd op de ontwikkelcomputer terwijl de IoT Edge-runtime en -modules worden uitgevoerd op een andere fysieke machine. Fouten opsporen vanuit Visual Studio Code:
- Stel uw IoT Edge-apparaat in, bouw uw IoT Edge-modules met het Dockerfile voor foutopsporing en implementeer vervolgens op het IoT Edge-apparaat.
- Werk
launch.json
bij zodat Visual Studio Code kan worden gekoppeld aan het proces in een container op de externe computer. U vindt dit bestand in de.vscode
map in uw werkruimte en wordt bijgewerkt telkens wanneer u een nieuwe module toevoegt die ondersteuning biedt voor foutopsporing. - Gebruik externe SSH-foutopsporing om te koppelen aan de container op de externe computer.
Uw module bouwen en implementeren op een IoT Edge-apparaat
Open in Visual Studio Code het manifestbestand voor de deployment.debug.template.json-implementatie . In het implementatiemanifest worden de modules beschreven die moeten worden geconfigureerd op het beoogde IoT Edge-apparaat. Werk vóór de implementatie uw Azure Container Registry-referenties en module-installatiekopieën bij met de juiste createOptions
waarden. Zie Opties voor het maken van containers configureren voor IoT Edge-modules voor meer informatie over createOption-waarden.
Als u een Azure Container Registry gebruikt om de installatiekopie van de module op te slaan, voegt u uw referenties toe aan de sectie registerCredentials van edgeAgent>in > Vervang myacr door uw eigen registernaam op beide plaatsen en geef uw wachtwoord en aanmeldingsserveradres op. Voorbeeld:
"modulesContent": { "$edgeAgent": { "properties.desired": { "schemaVersion": "1.1", "runtime": { "type": "docker", "settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "myacr": { "username": "myacr", "password": "<your_azure_container_registry_password>", "address": "myacr.azurecr.io" } } } }, ...
Voeg de volgende tekenreeksinhoud toe aan of vervang deze door de waarde createOptions voor elk systeem (edgeHub en edgeAgent) en aangepaste module (bijvoorbeeld filtermodule). Wijzig indien nodig de waarden.
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
De filtermoduleconfiguratie moet bijvoorbeeld vergelijkbaar zijn met:
"filtermodule": { "version": "1.0", "type": "docker", "status": "running", "restartPolicy": "always", "settings": { "image": "myacr.azurecr.io/filtermodule:0.0.1-amd64", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}" }
- Voer in het opdrachtenpalet van Visual Studio Code de opdracht Azure IoT Edge uit: Een IoT Edge-oplossing bouwen en pushen.
- Selecteer het
deployment.debug.template.json
bestand voor uw oplossing. - Klik in de van de Visual Studio Code Explorer-weergave met de rechtermuisknop op de naam van het IoT Edge-apparaat voor implementatie en kies > maken.
Aanbeveling
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 te controleren. Elk IoT Edge-apparaat bevat deze twee modules.
- Navigeer naar de configuratiemap van uw oplossing, selecteer het
deployment.debug.amd64.json
bestand en selecteer vervolgens Edge-implementatiemanifest selecteren.
Controleer de containerstatus vanaf uw apparaat of virtuele machine door de docker ps
opdracht uit te voeren in een terminal. De container wordt weergegeven nadat u de opdracht hebt uitgevoerd. Als Visual Studio Code en de IoT Edge-runtime op dezelfde computer worden uitgevoerd, controleert u de status in de Docker-weergave van Visual Studio Code.
Belangrijk
Als u een privéregister zoals Azure Container Registry voor uw installatiekopieën gebruikt, moet u zich mogelijk verifiëren om installatiekopieën te pushen. Gebruik docker login <Azure Container Registry login server>
of az acr login --name <Azure Container Registry name>
om te verifiëren.
Aanmelden bij Docker
Geef uw containerregisterreferenties op voor Docker, zodat deze uw containerinstallatiekopieën naar de opslag in het register kan pushen.
Meld u aan bij Docker met de Azure Container Registry-referenties die u hebt opgeslagen nadat u het register hebt gemaakt.
docker login -u <Azure Container Registry username> -p <Azure Container Registry password> <Azure Container Registry login server>
Mogelijk ontvangt u een beveiligingswaarschuwing die het gebruik van
--password-stdin
. Hoewel het een aanbevolen best practice is voor productiescenario's, valt dit buiten het bereik van deze zelfstudie. Zie de documentatie voor aanmelding bij Docker voor meer informatie.Meld u aan bij de Azure Container Registry. Mogelijk moet u Azure CLI installeren om de
az
opdracht te kunnen gebruiken. Met deze opdracht wordt u gevraagd om uw gebruikersnaam en wachtwoord in het containerregister in Toegangssleutelsaz acr login -n <Azure Container Registry name>
Aanbeveling
Als u op enig moment in deze zelfstudie wordt afgemeld, herhaalt u de aanmeldingsstappen van Docker en Azure Container Registry om door te gaan.
Docker-installatiekopieën bouwen
Gebruik het Dockerfile van de module om de Docker-installatiekopieën te bouwen .
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
Als u bijvoorbeeld de installatiekopieën voor het lokale register of een Azure Container Registry wilt maken, gebruikt u de volgende opdrachten:
# Build the image for the local registry
docker build --rm -f "./modules/filtermodule/Dockerfile.amd64.debug" -t localhost:5000/filtermodule:0.0.1-amd64 "./modules/filtermodule"
# Or build the image for an Azure Container Registry
docker build --rm -f "./modules/filtermodule/Dockerfile.amd64.debug" -t myacr.azurecr.io/filtermodule:0.0.1-amd64 "./modules/filtermodule"
Docker-installatiekopieën van pushmodule
Push de module-installatiekopieën naar het lokale register of een containerregister.
docker push <ImageName>
Voorbeeld:
# Push the Docker image to the local registry
docker push localhost:5000/filtermodule:0.0.1-amd64
# Or push the Docker image to an Azure Container Registry
az acr login --name myacr
docker push myacr.azurecr.io/filtermodule:0.0.1-amd64
De module implementeren op het IoT Edge-apparaat
Gebruik de opdracht Azure CLI-setmodules voor IoT Edge om de modules te implementeren in de Azure IoT Hub. Als u bijvoorbeeld de modules wilt implementeren die in het deployment.debug.template.json-bestand zijn gedefinieerd in IoT Hub my-iot-hub voor het IoT Edge-apparaat, gebruikt u de volgende opdracht:
az iot edge set-modules --hub-name my-iot-hub --device-id my-device --content ./deployment.debug.template.json --login "HostName=my-iot-hub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=<SharedAccessKey>"
Aanbeveling
U vindt uw gedeelde IoT Hub-toegangssleutel in Azure Portal in uw Gedeelde toegangsbeleid>
Fouten opsporen in uw module
Als u fouten in modules op een extern apparaat wilt opsporen, gebruikt u externe SSH-foutopsporing in Visual Studio Code.
Schakel externe foutopsporing van Visual Studio Code in door de extensie Remote Development te installeren. Zie Externe ontwikkeling van Visual Studio Code voor meer informatie over externe foutopsporing in Visual Studio Code.
Zie Externe ontwikkeling met behulp van SSH voor meer informatie over het gebruik van externe SSH-foutopsporing in Visual Studio Code.
Selecteer in de weergave Foutopsporing in Visual Studio Code het configuratiebestand voor foutopsporing voor de module. Standaard gebruiken de .debug Dockerfile, containerinstellingen createOptions
van de module en het launch.json
bestand localhost.
Selecteer Foutopsporing starten of F5 en selecteer vervolgens het proces waaraan u wilt koppelen. In de weergave Foutopsporing in Visual Studio Code ziet u variabelen in het linkerdeelvenster.
Fouten opsporen met externe SSH van Docker
De Docker- en Moby-engines ondersteunen SSH-verbindingen met containers, zodat u fouten kunt opsporen in Visual Studio Code die is verbonden met een extern apparaat. U moet aan de volgende vereisten voldoen voordat u deze functie kunt gebruiken.
Vereisten voor externe SSH-foutopsporing kunnen verschillen, afhankelijk van de taal die u gebruikt. In de volgende secties wordt de installatie voor .NET beschreven. Zie Remote Development met behulp van SSH voor een overzicht voor meer informatie over andere talen. Meer informatie over het configureren van externe foutopsporing vindt u in secties voor foutopsporing voor elke taal in de Documentatie van Visual Studio Code.
Docker SSH-tunneling configureren
Volg de stappen in Docker SSH-tunneling om SSH-tunneling in te stellen op uw ontwikkelcomputer. Voor SSH-tunneling is verificatie van een openbaar/persoonlijk sleutelpaar en een Docker-context vereist waarmee het eindpunt van het externe apparaat wordt gedefinieerd.
Voor het maken van verbinding met Docker zijn hoofdbevoegdheden vereist. Volg de stappen in Docker beheren als een niet-hoofdgebruiker om verbinding met de Docker-daemon op het externe apparaat toe te staan. Wanneer u klaar bent met foutopsporing, wilt u mogelijk uw gebruiker verwijderen uit de Docker-groep.
Gebruik in Visual Studio Code het opdrachtpalet (Ctrl+Shift+P) om de Docker-context uit te geven: gebruik de opdracht om de Docker-context te activeren die verwijst naar de externe computer. Met deze opdracht kunnen zowel Visual Studio Code als Docker CLI de context van de externe computer gebruiken.
Aanbeveling
Alle Docker-opdrachten gebruiken de huidige context. Vergeet niet om de context weer te wijzigen in de standaardinstelling wanneer u klaar bent met foutopsporing.
Als u wilt controleren of de externe Docker-context actief is, vermeldt u de actieve containers op het externe apparaat:
docker ps
De uitvoer bevat de containers die op het externe apparaat draaien, als de volgende:
PS C:\> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a317b8058786 myacr.azurecr.io/filtermodule:0.0.1-amd64 "dotnet filtermodule…" 24 hours ago Up 6 minutes filtermodule d4d949f8dfb9 mcr.microsoft.com/azureiotedge-hub:1.5 "/bin/sh -c 'echo \"$…" 24 hours ago Up 6 minutes 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:5671->5671/tcp, :::5671->5671/tcp, 0.0.0.0:8883->8883/tcp, :::8883->8883/tcp, 1883/tcp edgeHub 1f0da9cfe8e8 mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0 "/bin/sh -c 'echo \"$…" 24 hours ago Up 6 minutes tempSensor 66078969d843 mcr.microsoft.com/azureiotedge-agent:1.5 "/bin/sh -c 'exec /a…" 24 hours ago Up 6 minutes edgeAgent
Open launch.json in de map .vscode in Visual Studio Code en voeg een nieuwe configuratie toe. Selecteer Configuratie toevoegen en kies vervolgens de overeenkomende externe bijlagesjabloon voor uw module. De volgende configuratie is bijvoorbeeld voor .NET Core. Wijzig de waarde voor de parameter -H in PipeArgs in dns-naam of IP-adres van uw apparaat.
"configurations": [ { "name": "Remote Debug IoT Edge Module (.NET Core)", "type": "coreclr", "request": "attach", "processId": "${command:pickRemoteProcess}", "pipeTransport": { "pipeProgram": "docker", "pipeArgs": [ "-H", "ssh://user@my-device-vm.eastus.cloudapp.azure.com:22", "exec", "-i", "filtermodule", "sh", "-c" ], "debuggerPath": "~/vsdbg/vsdbg", "pipeCwd": "${workspaceFolder}", "quoteArgs": true }, "sourceFileMap": { "/app": "${workspaceFolder}/modules/filtermodule" }, "justMyCode": true },
Fouten in uw module op afstand opsporen
Selecteer in de weergave Foutopsporing in Visual Studio Code de foutopsporingsconfiguratie remote debug IoT Edge Module (.NET Core).
Selecteer Foutopsporing starten of F5 selecteren. Selecteer het proces waaraan u wilt koppelen.
In de weergave Foutopsporing van Visual Studio Code ziet u de variabelen in het linkerdeelvenster.
Stel in Visual Studio Code onderbrekingspunten in uw aangepaste module in.
Wanneer een onderbrekingspunt wordt bereikt, kunt u variabelen inspecteren, code doorlopen en fouten opsporen in uw module.
Notitie
In het voorgaande voorbeeld ziet u hoe u fouten in IoT Edge-modules op externe containers kunt opsporen. In het voorbeeld wordt een externe Docker-context toegevoegd en worden de Docker-bevoegdheden op het externe apparaat gewijzigd. Nadat u klaar bent met het opsporen van fouten in uw modules, stelt u de Docker-context in op de standaardinstelling en verwijdert u bevoegdheden uit uw gebruikersaccount.
Zie dit Blogbericht voor IoT Developer voor een voorbeeld met behulp van een Raspberry Pi-apparaat.
Volgende stappen
Nadat u uw module hebt gemaakt, leert u hoe u Azure IoT Edge-modules implementeert.
Als u modules voor uw IoT Edge-apparaten wilt ontwikkelen, leert u meer over en gebruikt u Azure IoT Hub SDK's.