Megosztás a következőn keresztül:


Azure IoT Edge-modulok hibakeresése a Visual Studio Code használatával

A következőkre vonatkozik:IoT Edge 1.5 pipa IoT Edge 1.5

Fontos

Az IoT Edge 1.5 LTS a támogatott kiadás. Az IoT Edge 1.4 LTS 2024. november 12-én megszűnik. Ha egy korábbi kiadáson dolgozik, olvassa el az IoT Edge frissítése című témakört.

Ez a cikk bemutatja, hogyan használhatja a Visual Studio Code-ot az IoT Edge-modulok hibakeresésére több nyelven. A fejlesztői számítógépen a Visual Studio Code használatával csatolhatja és hibakereséssel végezheti el a modult egy helyi vagy távoli modultárolóban.

Ez a cikk két IoT Edge-fejlesztési eszköz lépéseit tartalmazza.

  • Azure IoT Edge Fejlesztői eszköz parancssori eszköz (CLI). Ezt az eszközt előnyben részesítik a fejlesztéshez.
  • Azure IoT Edge-eszközök Visual Studio Code-bővítményhez . A bővítmény karbantartási módban van.

Az eszközverzió kiválasztásához használja a cikk elején található eszközválasztó gombot.

A Visual Studio Code az alábbi programozási nyelveken támogatja az IoT Edge-modulok írását:

  • C# és C# Azure Functions
  • C
  • Python
  • Node.js
  • Java

Az Azure IoT Edge a következő eszközarchitektúrákat támogatja:

  • AMD64
  • ARM32v7
  • ARM64

A támogatott operációs rendszerekről, nyelvekről és architektúrákról további információt a Nyelv és az architektúra támogatása című témakörben talál.

A Visual Studio Code IoT Edge-bővítmény használatakor a modulkódot az IoT Edge-szimulátorban is elindíthatja és hibakereséssel végezheti el.

Windows rendszerű fejlesztőszámítógépet és hibakeresési modulokat is használhat Linux-tárolókban a Windowson futó IoT Edge (EFLOW) használatával. További információ az EFLOW modulfejlesztéshez való használatáról: Oktatóanyag: IoT Edge-modulok fejlesztése Linux-tárolókkal linuxos IoT Edge használatával Windows rendszeren.

Ha nem ismeri a Visual Studio Code hibakeresési képességeit, tekintse meg a Visual Studio Code hibakeresését.

Előfeltételek

Fejlesztési gépként használhat windowsos, macOS vagy Linux rendszerű számítógépet vagy virtuális gépet. Windows rendszerű számítógépeken Windows- vagy Linux-modulokat is fejleszthet. Linux-modulok fejlesztéséhez olyan Windows rendszerű számítógépet használjon, amely megfelel a Docker Desktop követelményeinek.

A fejlesztéshez és hibakereséshez szükséges eszközök telepítéséhez végezze el az Azure IoT Edge-modulok fejlesztését a Visual Studio Code oktatóanyagával.

A Visual Studio Code telepítése

Adja hozzá a következő bővítményeket:

A modul eszközön való hibakereséséhez a következőkre van szüksége:

  • Aktív IoT Hub legalább egy IoT Edge-eszközzel.
  • Fizikai IoT Edge-eszköz vagy virtuális eszköz. Ha virtuális eszközt szeretne létrehozni az Azure-ban, kövesse a Linuxhoz készült rövid útmutató lépéseit.
  • Egyéni IoT Edge-modul. Egyéni modul létrehozásához kövesse az Azure IoT Edge-modulok fejlesztésének lépéseit a Visual Studio Code oktatóanyagával.

Hibakeresés tároló nélkül IoT Edge-szimulátor használatával

Az IoT Edge-szimulátor egy olyan eszköz, amely a fejlesztői számítógépen fut, és egyetlen IoT Edge-eszköz viselkedését szimulálja. Az IoT Edge-szimulátor használatával fizikai eszköz vagy teljes IoT Edge-eszköz futtatókörnyezet nélkül fejlesztheti és tesztelheti az IoT Edge-modulokat.

Az alábbi hibakeresési lépések feltételezik, hogy már létrehozott egy egyéni modult. Ha még nem hozott létre egyéni modult, kövesse az Azure IoT Edge-modulok fejlesztése a Visual Studio Code-oktatóanyagban leírt lépéseket.

A modul tároló nélküli hibakeresése nem érhető el C vagy Python használatakor.

Hibakeresés csatolási módban az IoT Edge-szimulátor használatával

A csatolási módban történő hibakeresés nem támogatott C vagy Python esetén.

Modul hibakeresése az IoT Edge-futtatókörnyezettel

Minden modulmappában több Docker-fájl található a különböző tárolótípusokhoz. A .debug kiterjesztéssel végződő fájlok bármelyikével létrehozhatja a modult tesztelésre.

Ha ezzel a módszerrel hibakeresést hajt végre, a modulok az IoT Edge-futtatókörnyezeten futnak. Az IoT Edge-eszköz és a Visual Studio Code lehet ugyanazon a gépen, vagy jellemzően a Visual Studio Code a fejlesztő gépen van, és az IoT Edge-futtatókörnyezet és a modulok egy másik fizikai gépen futnak. A Visual Studio Code-ból való hibakereséshez a következőt kell tennie:

  • Állítsa be az IoT Edge-eszközt, hozza létre az IoT Edge-modulokat a .debug Dockerfile használatával, majd telepítse az IoT Edge-eszközön.
  • Frissítsen launch.json , hogy a Visual Studio Code csatolhassa a folyamatot egy tárolóban a távoli gépen. Ezt a fájlt a .vscode munkaterület mappájában találja, és minden alkalommal frissül, amikor új modult ad hozzá, amely támogatja a hibakeresést.
  • Távoli SSH-hibakereséssel csatolhatja a tárolót a távoli gépen.

Modul létrehozása és üzembe helyezése IoT Edge-eszközön

A Visual Studio Code-ban nyissa meg a deployment.debug.template.json üzembehelyezési jegyzékfájlt. Az üzembe helyezési jegyzék ismerteti a célzott IoT Edge-eszközön konfigurálni kívánt modulokat. Az üzembe helyezés előtt frissítenie kell az Azure Container Registry hitelesítő adatait és a modul lemezképeit a megfelelő createOptions értékekkel. A createOption-értékekkel kapcsolatos további információkért tekintse meg az IoT Edge-modulok tároló-létrehozási beállításainak konfigurálását ismertető témakört.

  1. Ha egy Azure Container Registryt használ a modul lemezképének tárolásához, adja hozzá a hitelesítő adatait az edgeAgent>beállítások>beállításjegyzékének Hitelesítő adatok szakaszához deployment.debug.template.json. Cserélje le a myacr-t a saját regisztrációs adatbázis nevére mindkét helyen, és adja meg a jelszavát és a bejelentkezési kiszolgáló címét. Példa:

    "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"
              }
            }
          }
        },
    ...
    
  2. Adja hozzá vagy cserélje le a következő sztringezett tartalmat a createOptions értékre a felsorolt rendszerek (edgeHub és edgeAgent) és egyéni modul (például filtermodule) esetében. Szükség esetén módosítsa az értékeket.

    "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
    

    A szűrőmodul konfigurációjának például a következőhöz hasonlónak kell lennie:

    "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\"}]}}}"
    }
    
  1. A Visual Studio Code parancskatalógusában futtassa az Azure IoT Edge: Build and Push IoT Edge-megoldást.
  2. Válassza ki a deployment.debug.template.json megoldáshoz tartozó fájlt.
  3. A Visual Studio Code Explorer nézet Azure IoT Hub-eszközök> szakaszában kattintson a jobb gombbal az üzembe helyezéshez szükséges IoT Edge-eszköz nevére, majd válassza az Üzembe helyezés létrehozása önálló eszközhöz lehetőséget.

    Tipp.

    Ha meg szeretné győződni arról, hogy a kiválasztott eszköz egy IoT Edge-eszköz, jelölje ki a modulok listájának kibontásához, és ellenőrizze a $edgeHub és a $edgeAgent jelenlétét. Minden IoT Edge-eszköz tartalmazza ezt a két modult.

  4. Lépjen a megoldás konfigurációs mappájába, válassza ki a deployment.debug.amd64.json fájlt, majd válassza az Edge üzembehelyezési jegyzék kiválasztása lehetőséget.

A tároló állapotát az eszközről vagy a virtuális gépről ellenőrizheti a docker ps parancs terminálban való futtatásával. A parancs futtatása után a tárolónak szerepelnie kell a listában. Ha a Visual Studio Code és az IoT Edge futtatókörnyezete ugyanazon a gépen fut, a Visual Studio Code Docker nézetben is ellenőrizheti az állapotot.

Fontos

Ha magánregisztrációs adatbázist használ, például az Azure Container Registryt a rendszerképekhez, előfordulhat, hogy hitelesítenie kell magát a rendszerképek leküldéséhez. Használja docker login <Azure Container Registry login server> vagy az acr login --name <Azure Container Registry name> hitelesítse.

Bejelentkezés a Dockerbe

Adja meg a tárolóregisztrációs adatbázis hitelesítő adatait a Dockernek, hogy az le tudja küldeni a tárolólemezképet a tárolóregisztrációs adatbázisban lévő tárolóba.

  1. Jelentkezzen be a Dockerbe a beállításjegyzék létrehozása után mentett Azure Container Registry-hitelesítő adatokkal.

    docker login -u <Azure Container Registry username> -p <Azure Container Registry password> <Azure Container Registry login server>
    

    Biztonsági figyelmeztetést kaphat, amely a használatát --password-stdinjavasolja. Bár ez az ajánlott eljárás éles forgatókönyvekhez, az oktatóanyag hatókörén kívül esik. További információkért tekintse meg a Docker bejelentkezési referenciát.

  2. Jelentkezzen be az Azure Container Registrybe. Előfordulhat, hogy a parancs használatához telepítenie kell az Azure CLI-taz. Ez a parancs a tárolóregisztrációs adatbázisban található felhasználónevet és jelszót kéri a Beállítások>hozzáférési kulcsaiban.

    az acr login -n <Azure Container Registry name>
    

Tipp.

Ha az oktatóanyag bármely pontján kijelentkezik, ismételje meg a Docker és az Azure Container Registry bejelentkezési lépéseit a folytatáshoz.

Build modul Docker-rendszerképe

A modul Docker-rendszerképének létrehozásához használja a modul Docker-fájlját.

docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>" 

Ha például a rendszerképet a helyi beállításjegyzékhez vagy egy Azure Container Registryhez szeretné létrehozni, használja a következő parancsokat:

# 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"

Leküldéses modul Docker-rendszerképe

Küldje el a modul rendszerképét a helyi beállításjegyzékbe vagy egy tárolóregisztrációs adatbázisba.

docker push <ImageName>

Példa:

# 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

A modul üzembe helyezése az IoT Edge-eszközön

Az IoT Edge Azure CLI set-modules parancsával üzembe helyezheti a modulokat az Azure IoT Hubon. Ha például a deployment.debug.template.json fájlban definiált modulokat az IoT Hub my-iot-hubra szeretné telepíteni az IoT Edge-eszköz my-device eszközén, használja a következő parancsot:

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>"

Tipp.

Az IoT Hub megosztott hozzáférési kulcsát az Azure Portalon találja az IoT Hub >biztonsági beállításai>között megosztott hozzáférési szabályzatok>iothubownerben.

A modul hibakeresése

A modulok távoli eszközön való hibakereséséhez használhatja a Távoli SSH-hibakeresést a Visual Studio Code-ban.

A Visual Studio Code távoli hibakeresésének engedélyezéséhez telepítse a Remote Development bővítményt. További információ a Visual Studio Code távoli hibakereséséről: Visual Studio Code Remote Development.

A Távoli SSH-hibakeresés Visual Studio Code-ban való használatával kapcsolatos részletekért lásd : Távoli fejlesztés SSH használatával

A Visual Studio Code Hibakeresési nézetben válassza ki a modul hibakeresési konfigurációs fájlját. Alapértelmezés szerint a .debug Dockerfile, a modul tárolóbeállításai createOptions és a fájl a launch.json localhostot használja.

Válassza a Hibakeresés indítása vagy az F5 lehetőséget. Válassza ki a csatolandó folyamatot. A Visual Studio Code Hibakeresési nézetben változók láthatók a bal oldali panelen.

Hibakeresés a Docker Távoli SSH használatával

A Docker és a Moby motorjai támogatják a tárolókhoz való SSH-kapcsolatokat, így a Visual Studio Code-ban hibakeresést végezhet egy távoli eszközhöz csatlakoztatva. A funkció használatához meg kell felelnie az alábbi előfeltételeknek.

A távoli SSH hibakeresési előfeltételei a használt nyelvtől függően eltérőek lehetnek. A következő szakaszok a .NET beállítását ismertetik. A többi nyelvről további információt az SSH-t használó távoli fejlesztés című témakörben talál. A távoli hibakeresés konfigurálásával kapcsolatos részletek a Visual Studio Code dokumentációjában találhatók az egyes nyelvek hibakeresési szakaszaiban.

Docker SSH-bújtatás konfigurálása

  1. A Docker SSH-bújtatás lépéseit követve konfigurálhatja az SSH-bújtatást a fejlesztői számítógépen. Az SSH-bújtatáshoz nyilvános/titkos kulcspáros hitelesítésre és a távoli eszközvégpontot meghatározó Docker-környezetre van szükség.

  2. A Dockerhez való csatlakozáshoz gyökérszintű jogosultságok szükségesek. A Docker nem gyökérfelhasználóként való kezelésének lépéseit követve engedélyezheti a kapcsolatot a Docker démonával a távoli eszközön. Ha befejezte a hibakeresést, érdemes lehet eltávolítania a felhasználót a Docker-csoportból.

  3. A Visual Studio Code-ban a Parancskatalógus (Ctrl+Shift+P) segítségével adja ki a Docker-környezetet: A parancs használatával aktiválhatja a távoli gépre mutató Docker-környezetet. Ez a parancs miatt a Visual Studio Code és a Docker CLI is a távoli gép környezetét használja.

    Tipp.

    Minden Docker-parancs az aktuális környezetet használja. Ha végzett a hibakereséssel, ne felejtse el a környezet alapértelmezettre történő módosítását.

  4. A távoli Docker-környezet aktív állapotának ellenőrzéséhez sorolja fel a távoli eszközön futó tárolókat:

    docker ps
    

    A kimenetnek hasonlónak kell lennie a távoli eszközön futó tárolóknak:

    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
    
  5. A .vscode könyvtárban adjon hozzá egy új konfigurációt a launch.json a fájl Visual Studio Code-ban való megnyitásával. Válassza a Konfiguráció hozzáadása lehetőséget, majd válassza ki a modulhoz megfelelő távoli csatolási sablont. Az alábbi konfiguráció például a .NET Core-hoz készült. Módosítsa a PipeArgs -H paraméterének értékét az eszköz DNS-nevére vagy IP-címére.

    "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
    },
    

A modul távoli hibakeresése

  1. A Visual Studio Code Hibakeresési nézetben válassza ki a hibakeresési konfiguráció távoli hibakeresési IoT Edge-modulját (.NET Core)..

  2. Válassza a Hibakeresés indítása vagy az F5 lehetőséget. Válassza ki a csatolandó folyamatot.

  3. A Visual Studio Code Hibakeresés nézetében a bal oldali panelen láthatók a változók.

  4. A Visual Studio Code-ban állítson be töréspontokat az egyéni modulban.

  5. Töréspont elérésekor megvizsgálhatja a változókat, végiglépkedhet a kódon, és hibakeresést végezhet a modulban.

    Képernyőkép a Docker-tárolóhoz csatolt Visual Studio Code-ról egy távoli eszközön, töréspontnál szüneteltetve.

Feljegyzés

Az előző példa bemutatja, hogyan lehet hibakeresést végezni az IoT Edge-modulokon távoli tárolókon. A példa egy távoli Docker-környezetet ad hozzá, és módosítja a Docker-jogosultságokat a távoli eszközön. Miután befejezte a modulok hibakeresését, állítsa be a Docker-környezetet alapértelmezettre, és távolítsa el a jogosultságokat a felhasználói fiókjából.

Az IoT Developer blog bejegyzésében egy Raspberry Pi-eszközt használó példát talál.

Következő lépések

Miután elkészítette a modult, megtudhatja, hogyan helyezhet üzembe Azure IoT Edge-modulokat.

Az IoT Edge-eszközök moduljainak fejlesztéséhez ismerje meg és használja az Azure IoT Hub SDK-jait.