Použití Visual Studio Code k vývoji a ladění modulů pro Azure IoT EdgeUse Visual Studio Code to develop and debug modules for Azure IoT Edge

Obchodní logiku můžete převést do modulů pro Azure IoT Edge.You can turn your business logic into modules for Azure IoT Edge. V tomto článku se dozvíte, jak používat Visual Studio Code jako hlavní nástroj pro vývoj a ladění modulů.This article shows you how to use Visual Studio Code as the main tool to develop and debug modules.

Existují dva způsoby, jak ladit moduly napsané C#v, Node. js nebo Java v Visual Studio Code: můžete buď připojit proces v kontejneru modulu, nebo spustit kód modulu v režimu ladění.There are two ways to debug modules written in C#, Node.js, or Java in Visual Studio Code: You can either attach a process in a module container or launch the module code in debug mode. Chcete-li ladit moduly napsané v Pythonu nebo C, můžete se připojit pouze k procesu v kontejnerech Linux amd64.To debug modules written in Python or C, you can only attach to a process in Linux amd64 containers.

Pokud nejste obeznámeni s funkcemi ladění Visual Studio Code, přečtěte si o ladění.If you aren't familiar with the debugging capabilities of Visual Studio Code, read about Debugging.

Tento článek poskytuje pokyny pro vývoj a ladění modulů v několika jazycích pro více architektur.This article provides instructions for developing and debugging modules in multiple languages for multiple architectures. V současné době Visual Studio Code poskytuje podporu pro moduly napsané v C#jazycích, C, Python, Node. js a Java.Currently, Visual Studio Code provides support for modules written in C#, C, Python, Node.js, and Java. Podporované architektury zařízení jsou x64 a ARM32.The supported device architectures are X64 and ARM32. Další informace o podporovaných operačních systémech, jazycích a architekturách najdete v tématu Podpora jazyků a architektur.For more information about supported operating systems, languages, and architectures, see Language and architecture support.

Poznámka

Podpora pro vývoj a ladění pro zařízení se systémem Linux ARM64 je ve verzi Public Preview.Develop and debugging support for Linux ARM64 devices is in public preview. Další informace najdete v tématu vývoj a ladění ARM64 IoT Edgech modulů v Visual Studio Code (Preview).For more information, see Develop and debug ARM64 IoT Edge modules in Visual Studio Code (preview).

PředpokladyPrerequisites

Jako vývojový počítač můžete použít počítač nebo virtuální počítač s Windows, macOS nebo Linux.You can use a computer or a virtual machine running Windows, macOS, or Linux as your development machine. V počítačích s Windows můžete vyvíjet moduly pro Windows nebo Linux.On Windows computers you can develop either Windows or Linux modules. Pro vývoj modulů Windows použijte počítač s Windows, na kterém běží verze 1809/Build 17763 nebo novější.To develop Windows modules, use a Windows computer running version 1809/build 17763 or newer. Pokud chcete vyvíjet moduly pro Linux, použijte počítač s Windows, který splňuje požadavky pro Docker Desktop.To develop Linux modules, use a Windows computer that meets the requirements for Docker Desktop.

Nejdřív nainstalujte Visual Studio Code a pak přidejte následující rozšíření:Install Visual Studio Code first and then add the following extensions:

Pro vývoj vašeho modulu budete taky muset nainstalovat některé další nástroje pro konkrétní jazyk:You'll also need to install some additional, language-specific tools to develop your module:

K sestavení a nasazení image modulu potřebujete Docker pro sestavení image modulu a registru kontejneru pro uložení image modulu:To build and deploy your module image, you need Docker to build the module image and a container registry to hold the module image:

Pokud nevyvíjíte modul v jazyce C, budete také potřebovat nástroj pro vývoj Azure IoT EdgeHub v Pythonu, aby bylo možné nastavit místní vývojové prostředí pro ladění, spouštění a testování vašeho řešení IoT Edge.Unless you're developing your module in C, you also need the Python-based Azure IoT EdgeHub Dev Tool in order to set up your local development environment to debug, run, and test your IoT Edge solution. Pokud jste to ještě neudělali, nainstalujte Python (2.7/3.6/3.7) a PIP a pak iotedgehubdev Nainstalujte spuštěním tohoto příkazu v terminálu.If you haven't already done so, install Python (2.7/3.6/3.7) and Pip and then install iotedgehubdev by running this command in your terminal.

pip install --upgrade iotedgehubdev

Poznámka

V současné době iotedgehubdev používá knihovnu Docker-py, která není kompatibilní s Pythonem 3,8.Currently, iotedgehubdev uses a docker-py library that is not compatible with Python 3.8.

Pokud máte několik Pythonů včetně předinstalovaného Pythonu 2,7 (například na Ubuntu nebo macOS), ujistěte se, že používáte správný pip nebo pip3 k instalaci iotedgehubdev .If you have multiple Python including pre-installed python 2.7 (for example, on Ubuntu or macOS), make sure you are using the correct pip or pip3 to install iotedgehubdev

K otestování modulu v zařízení budete potřebovat aktivní službu IoT Hub s aspoň jedním IoT Edge zařízením.To test your module on a device, you'll need an active IoT hub with at least one IoT Edge device. Pokud chcete počítač použít jako zařízení IoT Edge, postupujte podle kroků v rychlém startu pro Linux nebo Windows.To use your computer as an IoT Edge device, follow the steps in the quickstart for Linux or Windows. Pokud ve vývojovém počítači používáte IoT Edge démon, možná budete muset před přechodem na další krok zastavit EdgeHub a EdgeAgent.If you are running IoT Edge daemon on your development machine, you might need to stop EdgeHub and EdgeAgent before you move to next step.

Vytvořit novou šablonu řešeníCreate a new solution template

Následující kroky ukazují, jak vytvořit modul IoT Edge v preferovaném vývojovém jazyce (včetně Azure Functions, který jste napsali C#) pomocí Visual Studio Code a nástrojů Azure IoT.The following steps show you how to create an IoT Edge module in your preferred development language (including Azure Functions, written in C#) using Visual Studio Code and the Azure IoT Tools. Začnete vytvořením řešení a potom vygenerujete první modul v tomto řešení.You start by creating a solution, and then generating the first module in that solution. Každé řešení může obsahovat více modulů.Each solution can contain multiple modules.

  1. Vyberte zobrazit > paleta příkazů.Select View > Command Palette.

  2. V paletě příkazů zadejte a spusťte příkaz Azure IoT Edge: nové IoT Edge řešení.In the command palette, enter and run the command Azure IoT Edge: New IoT Edge Solution.

    Spustit nové řešení IoT Edge

  3. Přejděte do složky, ve které chcete vytvořit nové řešení, a pak vyberte Vybrat složku.Browse to the folder where you want to create the new solution and then select Select folder.

  4. Zadejte název svého řešení.Enter a name for your solution.

  5. Vyberte šablonu modulu pro preferovaný vývojový jazyk, který bude prvním modulem v řešení.Select a module template for your preferred development language to be the first module in the solution.

  6. Zadejte název svého modulu.Enter a name for your module. Vyberte název, který je jedinečný v rámci vašeho registru kontejneru.Choose a name that's unique within your container registry.

  7. Zadejte název úložiště imagí modulu.Provide the name of the module's image repository. Visual Studio Code automaticky vyplní název modulu názvem localhost: 5000/< název modulu> .Visual Studio Code autopopulates the module name with localhost:5000/<your module name>. Nahraďte je vlastními informacemi v registru.Replace it with your own registry information. Pokud pro testování používáte místní registr Docker, pak je localhost v pořádku.If you use a local Docker registry for testing, then localhost is fine. Pokud používáte Azure Container Registry, použijte přihlašovací server z nastavení registru.If you use Azure Container Registry, then use the login server from your registry's settings. Přihlašovací server vypadá jako <název registru> . azurecr.IO.The login server looks like <registry name>.azurecr.io. Nahraďte pouze část localhost: 5000 řetězce, aby konečný výsledek vypadal jako <název registru>. azurecr.IO/ <název modulu> .Only replace the localhost:5000 part of the string so that the final result looks like <registry name>.azurecr.io/<your module name>.

    Zadání úložiště imagí Dockeru

Visual Studio Code převezme poskytnuté informace, vytvoří řešení IoT Edge a pak ho načte do nového okna.Visual Studio Code takes the information you provided, creates an IoT Edge solution, and then loads it in a new window.

V rámci řešení jsou čtyři položky:There are four items within the solution:

  • Složka . VSCode obsahuje konfigurace ladění.A .vscode folder contains debug configurations.

  • Složka modulů má podsložky pro každý modul.A modules folder has subfolders for each module. V rámci složky pro každý modul je soubor Module. JSON, který určuje, jak jsou moduly sestavené a nasazené.Within the folder for each module there is a file, module.json, that controls how modules are built and deployed. Tento soubor je třeba upravit, aby se změnil registr kontejneru nasazení modulu z místního hostitele na vzdálený registr.This file would need to be modified to change the module deployment container registry from localhost to a remote registry. V tuto chvíli máte jenom jeden modul.At this point, you only have one module. Ale další informace můžete přidat do palety příkazů pomocí příkazu Azure IoT Edge: přidat IoT Edge modul.But you can add more in the command palette with the command Azure IoT Edge: Add IoT Edge Module.

  • Soubor . env obsahuje seznam proměnných prostředí.An .env file lists your environment variables. Pokud je Azure Container Registry vašeho registru, budete mít v něm Azure Container Registry uživatelské jméno a heslo.If Azure Container Registry is your registry, you'll have an Azure Container Registry username and password in it.

    Poznámka

    Soubor prostředí je vytvořen pouze v případě, že pro modul zadáte úložiště imagí.The environment file is only created if you provide an image repository for the module. Pokud jste přijali, že se místní localhost bude standardně testovat a ladit, pak nemusíte deklarovat proměnné prostředí.If you accepted the localhost defaults to test and debug locally, then you don't need to declare environment variables.

  • Soubor Deployment. template. JSON obsahuje nový modul spolu s ukázkovým modulem SimulatedTemperatureSensor , který simuluje data, která můžete použít pro testování.A deployment.template.json file lists your new module along with a sample SimulatedTemperatureSensor module that simulates data you can use for testing. Další informace o tom, jak manifesty nasazení fungují, najdete v tématu Naučte se používat manifesty nasazení k nasazení modulů a vytváření tras.For more information about how deployment manifests work, see Learn how to use deployment manifests to deploy modules and establish routes.

Chcete-li zjistit, jak funguje simulovaný modul teploty, zobrazte zdrojový kód SimulatedTemperatureSensor. csproj.To see how the simulated temperature module works, view the SimulatedTemperatureSensor.csproj source code.

Přidat další modulyAdd additional modules

Chcete-li do řešení přidat další moduly, spusťte příkaz Azure IoT Edge: přidat IoT Edge modul z palety příkazů.To add additional modules to your solution, run the command Azure IoT Edge: Add IoT Edge Module from the command palette. Můžete také kliknout pravým tlačítkem na složku moduly nebo deployment.template.json soubor v zobrazení Průzkumník Visual Studio Code a pak vybrat Přidat IoT Edge modul.You can also right-click the modules folder or the deployment.template.json file in the Visual Studio Code Explorer view and then select Add IoT Edge Module.

Vývoj moduluDevelop your module

Výchozí kód modulu, který je součástí řešení, je umístěn v následujícím umístění:The default module code that comes with the solution is located at the following location:

  • Funkce Azure Functions (C#): moduly > <název modulu> > <název modulu> . csAzure Function (C#): modules > <your module name> > <your module name>.cs
  • C#: moduly > <název modulu> > program.csC#: modules > <your module name> > Program.cs
  • Python: moduly > <název modulu> > Main.pyPython: modules > <your module name> > main.py
  • Node. js: moduly > <název modulu> > App. js.Node.js: modules > <your module name> > app.js
  • Java: moduly > <název modulu> > src > main > java > com > edgemodulemodules > App. JavaJava: modules > <your module name> > src > main > java > com > edgemodulemodules > App.java
  • C: moduly > <název modulu> > Main. cC: modules > <your module name> > main.c

Modul a soubor Deployment. template. JSON se nastavují tak, aby bylo možné sestavit řešení, nasdílet ho do registru kontejnerů a nasazovat ho do zařízení, abyste mohli začít testovat bez zásahu jakéhokoli kódu.The module and the deployment.template.json file are set up so that you can build the solution, push it to your container registry, and deploy it to a device to start testing without touching any code. Modul je sestaven tak, aby jednoduše převzal vstup ze zdroje (v tomto případě modul SimulatedTemperatureSensor, který simuluje data) a přesměruje jej na IoT Hub.The module is built to simply take input from a source (in this case, the SimulatedTemperatureSensor module that simulates data) and pipe it to IoT Hub.

Až budete připraveni šablonu přizpůsobit pomocí vlastního kódu, pomocí sad SDK pro Azure IoT Hub Sestavte moduly, které řeší klíčová úložiště pro řešení IoT, jako je zabezpečení, Správa zařízení a spolehlivost.When you're ready to customize the template with your own code, use the Azure IoT Hub SDKs to build modules that address the key needs for IoT solutions such as security, device management, and reliability.

Ladění modulu bez kontejneru (C#, Node. js, Java)Debug a module without a container (C#, Node.js, Java)

Pokud vyvíjíte v C#, Node. js nebo Java, modul vyžaduje použití objektu ModuleClient ve výchozím kódu modulu, aby mohl spouštět, spouštět a směrovat zprávy.If you're developing in C#, Node.js, or Java, your module requires use of a ModuleClient object in the default module code so that it can start, run, and route messages. Použijete také výchozí vstupní kanál input1 k provedení akce, když modul obdrží zprávy.You'll also use the default input channel input1 to take action when the module receives messages.

Nastavení simulátoru IoT Edge pro IoT Edge řešeníSet up IoT Edge simulator for IoT Edge solution

Ve vývojovém počítači můžete spustit simulátor IoT Edge a nemusíte instalovat démona zabezpečení IoT Edge, abyste mohli spustit řešení IoT Edge.On your development machine, you can start an IoT Edge simulator instead of installing the IoT Edge security daemon so that you can run your IoT Edge solution.

  1. V Průzkumníku zařízení na levé straně klikněte pravým tlačítkem na ID zařízení IoT Edge a pak vyberte nastavení IoT Edge simulátoru , abyste spustili simulátor s připojovacím řetězcem zařízení.In device explorer on the left side, right-click on your IoT Edge device ID, and then select Setup IoT Edge Simulator to start the simulator with the device connection string.
  2. V případě, že je možné úspěšně nastavit simulátor IoT Edge, přečtěte si podrobné informace o průběhu v integrovaném terminálu.You can see the IoT Edge Simulator has been successfully set up by reading the progress detail in the integrated terminal.

Nastavení simulátoru IoT Edge pro aplikaci s jedním modulemSet up IoT Edge simulator for single module app

Chcete-li nastavit a spustit simulátor, spusťte příkaz Azure IoT Edge: spustit simulátor IoT Edge centra pro jeden modul z palety příkazů Visual Studio Code.To set up and start the simulator, run the command Azure IoT Edge: Start IoT Edge Hub Simulator for Single Module from the Visual Studio Code command palette. Po zobrazení výzvy použijte hodnotu input1 z výchozího kódu modulu (nebo ekvivalentní hodnoty z vašeho kódu) jako vstupní název vaší aplikace.When prompted, use the value input1 from the default module code (or the equivalent value from your code) as the input name for your application. Příkaz aktivuje rozhraní příkazového řádku iotedgehubdev a potom spustí simulátor IoT Edge a kontejner modulu testovacího nástroje.The command triggers the iotedgehubdev CLI and then starts the IoT Edge simulator and a testing utility module container. V případě úspěšného spuštění simulátoru v režimu jediného modulu můžete zobrazit výstupy uvedené níže v integrovaném terminálu.You can see the outputs below in the integrated terminal if the simulator has been started in single module mode successfully. Můžete se také podívat na curl příkaz, který vám umožní poslat zprávu prostřednictvím.You can also see a curl command to help send message through. Budete jej později potřebovat.You will use it later.

Nastavení simulátoru IoT Edge pro aplikaci s jedním modulem

Chcete-li zobrazit stav spuštění modulu, můžete použít zobrazení Docker Exploreru v Visual Studio Code.You can use the Docker Explorer view in Visual Studio Code to see the module's running status.

Stav modulu simulátoru

Kontejner edgeHubDev je základem místního simulátoru IoT Edge.The edgeHubDev container is the core of the local IoT Edge simulator. Může běžet na vašem vývojovém počítači bez IoT Edge démon zabezpečení a poskytuje nastavení prostředí pro kontejnery aplikace v nativním modulu nebo modulu.It can run on your development machine without the IoT Edge security daemon and provides environment settings for your native module app or module containers. Vstupní kontejner zpřístupňuje rozhraní REST API, které umožňuje přemostění zpráv do cílového vstupního kanálu v modulu.The input container exposes REST APIs to help bridge messages to the target input channel on your module.

Ladit modul v režimu spuštěníDebug module in launch mode

  1. Připravte prostředí pro ladění podle požadavků vašeho vývojového jazyka, nastavte zarážku v modulu a vyberte konfiguraci ladění, která se má použít:Prepare your environment for debugging according to the requirements of your development language, set a breakpoint in your module, and select the debug configuration to use:

    • C#C#

      • V Visual Studio Code integrovaný terminál změňte adresář na <název modulu> složku a spusťte následující příkaz pro sestavení aplikace .NET Core.In the Visual Studio Code integrated terminal, change the directory to the <your module name> folder, and then run the following command to build .NET Core application.

        dotnet build
        
      • Otevřete soubor Program.cs a přidejte zarážku.Open the file Program.cs and add a breakpoint.

      • Výběrem možnosti zobrazit > laditpřejděte do zobrazení ladění Visual Studio Code.Navigate to the Visual Studio Code Debug view by selecting View > Debug. Vyberte konfiguraci ladění <název modulu> místní ladění (.NET Core) z rozevíracího seznamu.Select the debug configuration <your module name> Local Debug (.NET Core) from the dropdown.

        Poznámka

        Pokud vaše TargetFramework .NET Core není konzistentní s cestou k programu v launch.json, budete muset ručně aktualizovat cestu programu v launch.json tak, aby odpovídala TargetFramework v souboru. csproj, aby Visual Studio Code mohl tento program úspěšně spustit.If your .NET Core TargetFramework is not consistent with your program path in launch.json, you'll need to manually update the program path in launch.json to match the TargetFramework in your .csproj file so that Visual Studio Code can successfully launch this program.

    • Node.jsNode.js

      • V Visual Studio Code integrovaný terminál změňte adresář na <název modulu> složku a spusťte následující příkaz, který nainstaluje balíčky uzlů.In the Visual Studio Code integrated terminal, change the directory to the <your module name> folder, and then run the following command to install Node packages

        npm install
        
      • Otevřete soubor app.js a přidejte zarážku.Open the file app.js and add a breakpoint.

      • Výběrem možnosti zobrazit > laditpřejděte do zobrazení ladění Visual Studio Code.Navigate to the Visual Studio Code Debug view by selecting View > Debug. Z rozevíracího seznamu vyberte konfiguraci ladění <název modulu> místní ladění (Node. js) .Select the debug configuration <your module name> Local Debug (Node.js) from the dropdown.

    • JavaJava

      • Otevřete soubor App.java a přidejte zarážku.Open the file App.java and add a breakpoint.

      • Výběrem možnosti zobrazit > laditpřejděte do zobrazení ladění Visual Studio Code.Navigate to the Visual Studio Code Debug view by selecting View > Debug. Vyberte konfiguraci ladění <název modulu> místní ladění (Java) z rozevíracího seznamu.Select the debug configuration <your module name> Local Debug (Java) from the dropdown.

  2. Kliknutím na tlačítko Spustit ladění nebo stisknutím klávesy F5 spusťte relaci ladění.Click Start Debugging or press F5 to start the debug session.

  3. V Visual Studio Code Integrated Terminal spusťte následující příkaz, který odešle Hello World zprávu do vašeho modulu.In the Visual Studio Code integrated terminal, run the following command to send a Hello World message to your module. Toto je příkaz, který se zobrazí v předchozích krocích při nastavení IoT Edge simulátoru.This is the command shown in previous steps when you set up IoT Edge simulator.

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

    Poznámka

    Pokud používáte systém Windows, ujistěte se, že prostředí Visual Studio Code integrovaným terminálem je Git bash nebo WSL bash.If you are using Windows, making sure the shell of your Visual Studio Code integrated terminal is Git Bash or WSL Bash. Nemůžete spustit příkaz curl z PowerShellu nebo příkazového řádku.You cannot run the curl command from a PowerShell or command prompt.

    Tip

    K posílání zpráv místo curlmůžete použít taky post nebo jiné nástroje API.You can also use PostMan or other API tools to send messages through instead of curl.

  4. V zobrazení ladění Visual Studio Code uvidíte proměnné na levém panelu.In the Visual Studio Code Debug view, you'll see the variables in the left panel.

  5. Chcete-li zastavit relaci ladění, vyberte tlačítko Zastavit nebo stiskněte klávesy SHIFT + F5a potom spusťte Azure IoT Edge: zastavit IoT Edge simulátoru v paletě příkazů pro zastavení simulátoru a vyčištění.To stop your debugging session, select the Stop button or press Shift + F5, and then run Azure IoT Edge: Stop IoT Edge Simulator in the command palette to stop the simulator and clean up.

Ladění v režimu připojení s IoT Edge simulátoremC#(, Node. js, Java, Azure Functions)Debug in attach mode with IoT Edge Simulator (C#, Node.js, Java, Azure Functions)

Vaše výchozí řešení obsahuje dva moduly, jeden je simulovaný modul snímače teploty a druhý je modul kanálu.Your default solution contains two modules, one is a simulated temperature sensor module and the other is the pipe module. Senzor simulované teploty odesílá zprávy do modulu kanálu a zprávy jsou přesměrované do IoT Hub.The simulated temperature sensor sends messages to the pipe module and then the messages are piped to the IoT Hub. Ve složce modulu, kterou jste vytvořili, je k dispozici několik souborů Docker pro různé typy kontejnerů.In the module folder you created, there are several Docker files for different container types. Použijte kterýkoli ze souborů, které končí příponou . laděním sestavíte modul pro testování.Use any of the files that end with the extension .debug to build your module for testing.

V současné době je ladění v režimu připojení podporováno pouze následujícím způsobem:Currently, debugging in attach mode is supported only as follows:

  • C#moduly, včetně těch pro Azure Functions, podporují ladění v kontejnerech Linux amd64.C# modules, including those for Azure Functions, support debugging in Linux amd64 containers
  • Moduly node. js podporují ladění v kontejnerech Linux AMD64 a arm32v7 a v kontejnerech Windows amd64.Node.js modules support debugging in Linux amd64 and arm32v7 containers, and Windows amd64 containers
  • Moduly Java podporují ladění v kontejnerech Linux AMD64 a arm32v7Java modules support debugging in Linux amd64 and arm32v7 containers

Tip

Kliknutím na položku na stavovém řádku Visual Studio Code můžete přepínat mezi možnostmi výchozí platformy pro vaše řešení IoT Edge.You can switch among options for the default platform for your IoT Edge solution by clicking the item in the Visual Studio Code status bar.

Nastavení simulátoru IoT Edge pro IoT Edge řešeníSet up IoT Edge simulator for IoT Edge solution

Ve vývojovém počítači můžete spustit simulátor IoT Edge a nemusíte instalovat démona zabezpečení IoT Edge, abyste mohli spustit řešení IoT Edge.In your development machine, you can start an IoT Edge simulator instead of installing the IoT Edge security daemon so that you can run your IoT Edge solution.

  1. V Průzkumníku zařízení na levé straně klikněte pravým tlačítkem na ID zařízení IoT Edge a pak vyberte nastavení IoT Edge simulátoru , abyste spustili simulátor s připojovacím řetězcem zařízení.In device explorer on the left side, right-click on your IoT Edge device ID, and then select Setup IoT Edge Simulator to start the simulator with the device connection string.

  2. V případě, že je možné úspěšně nastavit simulátor IoT Edge, přečtěte si podrobné informace o průběhu v integrovaném terminálu.You can see the IoT Edge Simulator has been successfully set up by reading the progress detail in the integrated terminal.

Sestavení a spuštění kontejneru pro ladění a ladění v režimu připojeníBuild and run container for debugging and debug in attach mode

  1. Otevřete soubor modulu (Program.cs, app.js, App.javanebo <your module name>.cs) a přidejte zarážku.Open your module file (Program.cs, app.js, App.java, or <your module name>.cs) and add a breakpoint.

  2. V zobrazení Průzkumníka Visual Studio Code klikněte pravým tlačítkem na soubor deployment.debug.template.json pro vaše řešení a pak vyberte Sestavit a spustit IoT Edge řešení v simulátoru.In the Visual Studio Code Explorer view, right-click the deployment.debug.template.json file for your solution and then select Build and Run IoT Edge solution in Simulator. Všechny protokoly kontejneru modulů můžete sledovat ve stejném okně.You can watch all the module container logs in the same window. Můžete také přejít do zobrazení Docker a sledovat stav kontejneru.You can also navigate to the Docker view to watch container status.

    Sledovat proměnné

  3. Přejděte do zobrazení ladění Visual Studio Code a vyberte konfigurační soubor ladění pro váš modul.Navigate to the Visual Studio Code Debug view and select the debug configuration file for your module. Název možnosti ladění by měl být podobný <název modulu> vzdálené ladění.The debug option name should be similar to <your module name> Remote Debug

  4. Vyberte Spustit ladění nebo stiskněte klávesu F5.Select Start Debugging or press F5. Vyberte proces, ke kterému se chcete připojit.Select the process to attach to.

  5. V zobrazení ladění Visual Studio Code uvidíte proměnné na levém panelu.In Visual Studio Code Debug view, you'll see the variables in the left panel.

  6. Chcete-li zastavit relaci ladění, vyberte nejprve tlačítko Zastavit nebo stiskněte klávesy SHIFT + F5a potom vyberte Azure IoT Edge: zastavit IoT Edge simulátor z palety příkazů.To stop the debugging session, first select the Stop button or press Shift + F5, and then select Azure IoT Edge: Stop IoT Edge Simulator from the command palette.

Poznámka

Předchozí příklad ukazuje, jak ladit IoT Edge moduly na kontejnerech.The preceding example shows how to debug IoT Edge modules on containers. Přidali jste vystavené porty do kontejneru modulu createOptions nastavení.It added exposed ports to your module's container createOptions settings. Po dokončení ladění modulů doporučujeme odebrat tyto vystavené porty pro moduly IoT Edge připravené pro produkční prostředí.After you finish debugging your modules, we recommend you remove these exposed ports for production-ready IoT Edge modules.

V případě modulů napsaných v C#, včetně Azure Functions, je tento příklad založen na ladicí verzi Dockerfile.amd64.debug, která zahrnuje ladicí program příkazového řádku .NET Core (VSDBG) v imagi kontejneru při jeho vytváření.For modules written in C#, including Azure Functions, this example is based on the debug version of Dockerfile.amd64.debug, which includes the .NET Core command-line debugger (VSDBG) in your container image while building it. Po ladění C# modulů doporučujeme, abyste přímo používali souboru DOCKERFILE bez VSDBG pro IoT Edge moduly připravené pro produkční prostředí.After you debug your C# modules, we recommend that you directly use the Dockerfile without VSDBG for production-ready IoT Edge modules.

Ladění modulu pomocí modulu runtime IoT EdgeDebug a module with the IoT Edge runtime

V každé složce modulu existuje několik souborů Docker pro různé typy kontejnerů.In each module folder, there are several Docker files for different container types. Použijte kterýkoli ze souborů, které končí příponou . laděním sestavíte modul pro testování.Use any of the files that end with the extension .debug to build your module for testing.

Při ladění modulů pomocí této metody jsou moduly spuštěny na IoT Edge modulu runtime.When debugging modules using this method, your modules are running on top of the IoT Edge runtime. IoT Edge zařízení a Visual Studio Code se můžou nacházet na stejném počítači, nebo je obvykle Visual Studio Code ve vývojovém počítači a modul runtime IoT Edge a moduly běží na jiném fyzickém počítači.The IoT Edge device and your Visual Studio Code can be on the same machine, or more typically, Visual Studio Code is on the development machine and the IoT Edge runtime and modules are running on another physical machine. Chcete-li ladit z Visual Studio Code, je nutné:In order to debug from Visual Studio Code, you must:

  • Nastavte zařízení IoT Edge, sestavte moduly IoT Edge pomocí souboru Dockerfile . Debug a pak je nasaďte do IoT Edgeho zařízení.Set up your IoT Edge device, build your IoT Edge module(s) with the .debug Dockerfile, and then deploy to the IoT Edge device.
  • Vystavte IP adresu a port modulu, aby bylo možné připojit ladicí program.Expose the IP and port of the module so that the debugger can be attached.
  • Aktualizujte launch.json tak, aby se Visual Studio Code mohl připojit k procesu v kontejneru na vzdáleném počítači.Update the launch.json so that Visual Studio Code can attach to the process in the container on the remote machine. Tento soubor se nachází ve složce .vscode ve vašem pracovním prostoru a aktualizuje pokaždé, když přidáte nový modul, který podporuje ladění.This file is located in the .vscode folder in your workspace and updates each time you add a new module that supports debugging.

Sestavte a nasaďte modul do zařízení IoT Edge.Build and deploy your module to the IoT Edge device

  1. V Visual Studio Code otevřete deployment.debug.template.json souboru, který obsahuje ladicí verzi vašich imagí modulu se správnými nastavenými hodnotami createOptions.In Visual Studio Code, open the deployment.debug.template.json file, which contains the debug version of your module images with the proper createOptions values set.

  2. Pokud vyvíjíte modul v Pythonu, proveďte následující kroky, než budete pokračovat:If you're developing your module in Python, follow these steps before proceeding:

    • Otevřete soubor main.py a přidejte tento kód za oddíl import:Open the file main.py and add this code after the import section:

      import ptvsd
      ptvsd.enable_attach(('0.0.0.0',  5678))
      
    • Do zpětného volání, které chcete ladit, přidejte následující jednořádkový kód:Add the following single line of code to the callback you want to debug:

      ptvsd.break_into_debugger()
      

      Například pokud chcete ladit funkci receive_message_listener, vložte tento řádek kódu, jak je znázorněno níže:For example, if you want to debug the receive_message_listener function, you would insert that line of code as shown below:

      def receive_message_listener(client):
           ptvsd.break_into_debugger()
           global RECEIVED_MESSAGES
           while True:
               message = client.receive_message_on_input("input1")   # blocking call
               RECEIVED_MESSAGES += 1
               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. Na paletě příkazu Visual Studio Code:In the Visual Studio Code command palette:

    1. Spusťte příkaz Azure IoT Edge: Build a Push IoT Edge řešení.Run the command Azure IoT Edge: Build and Push IoT Edge solution.

    2. Vyberte soubor deployment.debug.template.json pro vaše řešení.Select the deployment.debug.template.json file for your solution.

  4. V části IoT Hub zařízení Azure v zobrazení Průzkumník Visual Studio Code:In the Azure IoT Hub Devices section of the Visual Studio Code Explorer view:

    1. Klikněte pravým tlačítkem na ID zařízení IoT Edge a pak vyberte vytvořit nasazení pro jedno zařízení.Right-click an IoT Edge device ID and then select Create Deployment for Single Device.

      Tip

      Pokud chcete potvrdit, že zařízení, které jste zvolili, je IoT Edge zařízení, vyberte ho a rozbalte seznam modulů a ověřte přítomnost $edgeHub a $edgeAgent.To confirm that the device you've chosen is an IoT Edge device, select it to expand the list of modules and verify the presence of $edgeHub and $edgeAgent. Každé zařízení IoT Edge zahrnuje tyto dva moduly.Every IoT Edge device includes these two modules.

    2. Přejděte do konfigurační složky vašeho řešení, vyberte soubor deployment.debug.amd64.json a pak vyberte možnost vybrat manifest nasazení Edge.Navigate to your solution's config folder, select the deployment.debug.amd64.json file, and then select Select Edge Deployment Manifest.

V integrovaném terminálu se nasazování úspěšně vytvoří s ID nasazení.You'll see the deployment successfully created with a deployment ID in the integrated terminal.

Stav kontejneru můžete zjistit spuštěním příkazu docker ps v terminálu.You can check your container status by running the docker ps command in the terminal. Pokud Visual Studio Code a modul runtime IoT Edge běží na stejném počítači, můžete také zjistit stav v zobrazení Docker Visual Studio Code.If your Visual Studio Code and IoT Edge runtime are running on the same machine, you can also check the status in the Visual Studio Code Docker view.

Vystavení IP adresy a portu modulu pro ladicí programExpose the IP and port of the module for the debugger

Tuto část můžete přeskočit, pokud jsou moduly spuštěny na stejném počítači jako Visual Studio Code, protože používáte localhost pro připojení ke kontejneru a již mají správné nastavení portu v souboru . Debug souboru dockerfile, createOptions nastavení kontejneru a launch.json souboru.You can skip this section if your modules are running on the same machine as Visual Studio Code, as you are using localhost to attach to the container and already have the correct port settings in the .debug Dockerfile, module's container createOptions settings, and launch.json file. Pokud jsou moduly a Visual Studio Code spuštěné v samostatných počítačích, postupujte podle kroků pro vývoj v jazyce.If your modules and Visual Studio Code are running on separate machines, follow the steps for your development language.

  • C#včetně Azure FunctionsC#, including Azure Functions

    Nakonfigurujte kanál SSH na vašem vývojovém počítači a IoT Edge zařízení a pak upravte launch.json souboru, který se má připojit.Configure the SSH channel on your development machine and IoT Edge device and then edit launch.json file to attach.

  • Node.jsNode.js

    • Zajistěte, aby byl modul na počítači, který se má ladit, spuštěný a připravený pro ladicí program, a že je tento port 9229 přístupný externě.Make sure the module on the machine to be debugged is running and ready for debuggers to attach, and that port 9229 is accessible externally. To můžete ověřit otevřením http://<target-machine-IP>:9229/json v počítači ladicího programu.You can verify this by opening http://<target-machine-IP>:9229/json on the debugger machine. Tato adresa URL by měla zobrazovat informace o modulu Node. js, který se má ladit.This URL should show information about the Node.js module to be debugged.

    • Na svém vývojovém počítači otevřete Visual Studio Code a pak upravte launch.json tak, aby hodnota adresy <název vašeho modulu> profil vzdáleného ladění (Node. js) (nebo <název modulu> vzdáleného ladění (Node. js v kontejneru Windows) , pokud je modul spuštěný jako kontejner Windows) je IP adresa počítače, který se právě ladí.On your development machine, open Visual Studio Code and then edit launch.json so that the address value of the <your module name> Remote Debug (Node.js) profile (or <your module name> Remote Debug (Node.js in Windows Container) profile if the module is running as a Windows container) is the IP of the machine being debugged.

  • JavaJava

    • Vytvořte tunel SSH na počítači, který se má ladit spuštěním ssh -f <username>@<target-machine> -L 5005:127.0.0.1:5005 -N.Build an SSH tunnel to the machine to be debugged by running ssh -f <username>@<target-machine> -L 5005:127.0.0.1:5005 -N.

    • Na svém vývojovém počítači otevřete Visual Studio Code a upravte <profilu> vzdáleného ladění (Java) v launch.json, abyste se mohli připojit k cílovému počítači.On your development machine, open Visual Studio Code and edit the <your module name> Remote Debug (Java) profile in launch.json so that you can attach to the target machine. Další informace o úpravách launch.json a ladění Java pomocí Visual Studio Code najdete v části o konfiguraci ladicího programu.To learn more about editing launch.json and debugging Java with Visual Studio Code, see the section on configuring the debugger.

  • PythonPython

    • Ujistěte se, že port 5678 na počítači, který se má ladit, je otevřený a přístupný.Make sure that port 5678 on the machine to be debugged is open and accessible.

    • V kódu ptvsd.enable_attach(('0.0.0.0', 5678)), který jste dříve vložili do main.py, změňte 0.0.0.0 na IP adresu počítače, který se má ladit.In the code ptvsd.enable_attach(('0.0.0.0', 5678)) that you earlier inserted into main.py, change 0.0.0.0 to the IP address of the machine to be debugged. Sestavte, dosaďte a znovu nasaďte IoT Edge modul.Build, push, and deploy your IoT Edge module again.

    • Na svém vývojovém počítači otevřete Visual Studio Code a pak upravte launch.json tak, aby host hodnota<profil > vzdáleného ladění (Python) používá IP adresu cílového počítače namísto localhost.On your development machine, open Visual Studio Code and then edit launch.json so that the host value of the <your module name> Remote Debug (Python) profile uses the IP address of the target machine instead of localhost.

Ladit modulDebug your module

  1. V zobrazení ladění Visual Studio Code vyberte konfigurační soubor ladění pro váš modul.In the Visual Studio Code Debug view, select the debug configuration file for your module. Název možnosti ladění by měl být podobný <název modulu> vzdálené ladění.The debug option name should be similar to <your module name> Remote Debug

  2. Otevřete soubor modulu pro vývojový jazyk a přidejte zarážku:Open the module file for your development language and add a breakpoint:

    • Funkce Azure FunctionsC#() : přidejte zarážku do souboru <your module name>.cs.Azure Function (C#): Add your breakpoint to the file <your module name>.cs.
    • C# : Přidejte zarážku do souboru Program.cs.C#: Add your breakpoint to the file Program.cs.
    • Node. js: přidejte zarážku do souboru app.js.Node.js: Add your breakpoint to the file app.js.
    • Java: přidejte zarážku do souboru App.java.Java: Add your breakpoint to the file App.java.
    • Python: přidejte zarážku do souboru main.pyv metodě zpětného volání, do které jste přidali řádek ptvsd.break_into_debugger().Python: Add your breakpoint to the file main.pyin the callback method where you added the ptvsd.break_into_debugger() line.
    • C: přidejte zarážku do souboru main.c.C: Add your breakpoint to the file main.c.
  3. Vyberte Spustit ladění nebo vyberte F5.Select Start Debugging or select F5. Vyberte proces, ke kterému se chcete připojit.Select the process to attach to.

  4. V zobrazení ladění Visual Studio Code uvidíte proměnné na levém panelu.In the Visual Studio Code Debug view, you'll see the variables in the left panel.

Poznámka

Předchozí příklad ukazuje, jak ladit IoT Edge moduly na kontejnerech.The preceding example shows how to debug IoT Edge modules on containers. Přidali jste vystavené porty do kontejneru modulu createOptions nastavení.It added exposed ports to your module's container createOptions settings. Po dokončení ladění modulů doporučujeme odebrat tyto vystavené porty pro moduly IoT Edge připravené pro produkční prostředí.After you finish debugging your modules, we recommend you remove these exposed ports for production-ready IoT Edge modules.

Vzdálené sestavení a ladění moduluBuild and debug a module remotely

Díky nedávným změnám v Docker i modulech Moby pro podporu připojení SSH a novému nastavení v nástrojích Azure IoT, které umožňují vkládání nastavení prostředí do palety příkazů Visual Studio Code a Azure IoT Edge terminálů, teď můžete sestavit a ladit moduly na vzdálených zařízeních.With recent changes in both the Docker and Moby engines to support SSH connections, and a new setting in Azure IoT Tools that enables injection of environment settings into the Visual Studio Code command palette and Azure IoT Edge terminals, you can now build and debug modules on remote devices.

Další informace a podrobné pokyny najdete v této položce blogu vývojář pro IoT .See this IoT Developer blog entry for more information and step-by-step instructions.

Další krokyNext steps

Po vytvoření modulu se naučíte, jak nasadit Azure IoT Edge moduly z Visual Studio Code.After you've built your module, learn how to deploy Azure IoT Edge modules from Visual Studio Code.

Pro vývoj modulů pro zařízení IoT Edge, pochopení a používání sady Azure IoT Hub SDK.To develop modules for your IoT Edge devices, Understand and use Azure IoT Hub SDKs.