Używanie Visual Studio Code do tworzenia i debugowania modułów dla Azure IoT EdgeUse Visual Studio Code to develop and debug modules for Azure IoT Edge

Dotyczy:  ikona tak IoT Edge 1,1  yes IoT Edge 1,2Applies to: yes icon IoT Edge 1.1 yes icon IoT Edge 1.2

Logikę biznesową można przekształcić w moduły dla Azure IoT Edge.You can turn your business logic into modules for Azure IoT Edge. W tym artykule pokazano, jak używać Visual Studio Code jako głównego narzędzia do tworzenia i debugowania modułów.This article shows you how to use Visual Studio Code as the main tool to develop and debug modules.

Istnieją dwa sposoby debugowania modułów napisanych w języku C#, Node.js lub Java w języku Visual Studio Code: możesz dołączyć proces w kontenerze modułów lub uruchomić kod modułu w trybie debugowania.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. Aby debugować moduły napisane w języku Python lub C, można dołączać do procesu tylko w kontenerach linux amd64.To debug modules written in Python or C, you can only attach to a process in Linux amd64 containers.

Jeśli nie znasz możliwości debugowania programu Visual Studio Code, przeczytaj o debugowaniu.If you aren't familiar with the debugging capabilities of Visual Studio Code, read about Debugging.

Ten artykuł zawiera instrukcje dotyczące programowania i debugowania modułów w wielu językach dla wielu architektur.This article provides instructions for developing and debugging modules in multiple languages for multiple architectures. Obecnie program Visual Studio Code obsługuje moduły napisane w językach C#, C, Python, Node.js i Java.Currently, Visual Studio Code provides support for modules written in C#, C, Python, Node.js, and Java. Obsługiwane architektury urządzeń to X64 i ARM32.The supported device architectures are X64 and ARM32. Aby uzyskać więcej informacji na temat obsługiwanych systemów operacyjnych, języków i architektur, zobacz Obsługa języków i architektur.For more information about supported operating systems, languages, and architectures, see Language and architecture support.

Uwaga

Obsługa opracowywania i debugowania dla urządzeń z systemem Linux ARM64 jest w publicznej wersji zapoznawczej.Develop and debugging support for Linux ARM64 devices is in public preview. Aby uzyskać więcej informacji, zobacz Develop and debug ARM64 IoT Edge modules in Visual Studio Code (preview) (Tworzeniei debugowanie modułów arm64 w Visual Studio Code (wersja zapoznawcza).For more information, see Develop and debug ARM64 IoT Edge modules in Visual Studio Code (preview).

Wymagania wstępnePrerequisites

Jako maszyny dewelopera możesz użyć komputera lub maszyny wirtualnej z systemem Windows, macOS lub Linux.You can use a computer or a virtual machine running Windows, macOS, or Linux as your development machine. Na komputerach z systemem Windows można tworzyć moduły systemu Windows lub Linux.On Windows computers you can develop either Windows or Linux modules. Aby tworzyć moduły systemu Windows, użyj komputera z systemem Windows w wersji 1809/kompilacji 17763 lub nowszej.To develop Windows modules, use a Windows computer running version 1809/build 17763 or newer. Aby opracować moduły systemu Linux, użyj komputera z systemem Windows, który spełnia wymagania dotyczące programu Docker Desktop.To develop Linux modules, use a Windows computer that meets the requirements for Docker Desktop.

Najpierw Visual Studio Code, a następnie dodaj następujące rozszerzenia:Install Visual Studio Code first and then add the following extensions:

Aby opracować moduł, musisz również zainstalować kilka dodatkowych narzędzi specyficznych dla języka:You'll also need to install some additional, language-specific tools to develop your module:

Aby skompilować i wdrożyć obraz modułu, potrzebujesz platformy Docker do skompilowania obrazu modułu i rejestru kontenerów do przechowywania obrazu modułu:To build and deploy your module image, you need Docker to build the module image and a container registry to hold the module image:

Jeśli nie opracowujesz modułu w języku C, potrzebujesz również opartego na języku Python narzędzia azure IoT EdgeHub Dev Tool w celu skonfigurowania lokalnego środowiska deweloperskiego do debugowania, uruchamiania i testowania IoT Edge programowania.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. Jeśli jeszcze tego nie zrobiono, zainstaluj język Python (2.7/3.6/3.7) i program Pip, a następnie zainstaluj program iotedgehubdev, uruchamiając to polecenie w terminalu.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

Uwaga

Obecnie iotedgehubdev używa biblioteki docker-py, która nie jest zgodna z językiem Python 3.8.Currently, iotedgehubdev uses a docker-py library that is not compatible with Python 3.8.

Jeśli masz wiele języka Python, w tym wstępnie zainstalowanego języka Python 2.7 (na przykład w systemie Ubuntu lub macOS), upewnij się, że używasz poprawnego języka lub w celu zainstalowania środowiska pip pip3 iotedgehubdevIf 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

Aby przetestować moduł na urządzeniu, potrzebne będzie aktywne centrum IoT z co najmniej jednym IoT Edge urządzeniem.To test your module on a device, you'll need an active IoT hub with at least one IoT Edge device. Aby użyć komputera jako urządzenia IoT Edge, wykonaj kroki opisane w przewodniku Szybki start dla systemu Linux lub Windows.To use your computer as an IoT Edge device, follow the steps in the quickstart for Linux or Windows. Jeśli używasz demona IoT Edge deweloperskiego, może być konieczne zatrzymanie edgeHub i EdgeAgent przed przejściem do następnego kroku.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.

Tworzenie nowego szablonu rozwiązaniaCreate a new solution template

Poniższe kroki pokazują, jak utworzyć moduł IoT Edge w preferowanym języku programowania (w tym w języku Azure Functions napisanym w języku C#) przy użyciu języka Visual Studio Code i Azure IoT Tools.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. Rozpoczniesz od utworzenia rozwiązania, a następnie wygenerowania pierwszego modułu w tym rozwiązaniu.You start by creating a solution, and then generating the first module in that solution. Każde rozwiązanie może zawierać wiele modułów.Each solution can contain multiple modules.

  1. Wybierz pozycję View Command Palette > (Wyświetl paletę poleceń).Select View > Command Palette.

  2. W palecie poleceń wprowadź i uruchom polecenie Azure IoT Edge: Nowe IoT Edge rozwiązanie.In the command palette, enter and run the command Azure IoT Edge: New IoT Edge Solution.

    Uruchamianie nowego IoT Edge rozwiązania

  3. Przejdź do folderu, w którym chcesz utworzyć nowe rozwiązanie, a następnie wybierz pozycję Wybierz folder.Browse to the folder where you want to create the new solution and then select Select folder.

  4. Wprowadź nazwę rozwiązania.Enter a name for your solution.

  5. Wybierz szablon modułu dla preferowanego języka programowania jako pierwszy moduł w rozwiązaniu.Select a module template for your preferred development language to be the first module in the solution.

  6. Wprowadź nazwę modułu.Enter a name for your module. Wybierz nazwę, która jest unikatowa w obrębie rejestru kontenerów.Choose a name that's unique within your container registry.

  7. Podaj nazwę repozytorium obrazów modułu.Provide the name of the module's image repository. Visual Studio Code automatycznie zasypuje nazwę modułu nazwą modułu localhost:5000/<> nazwę modułu.Visual Studio Code autopopulates the module name with localhost:5000/<your module name>. Zastąp go własnymi informacjami rejestru.Replace it with your own registry information. Jeśli do testowania używasz lokalnego rejestru platformy Docker, localhost jest w porządku.If you use a local Docker registry for testing, then localhost is fine. Jeśli używasz Azure Container Registry, użyj serwera logowania z ustawień rejestru.If you use Azure Container Registry, then use the login server from your registry's settings. Serwer logowania wygląda następująco: <registry name> .azurecr.io.The login server looks like <registry name>.azurecr.io. Zastąp tylko część localhost:5000 ciągu, aby wynik końcowy wyglądał następująco: <registry name> .azurecr.io/ <your module name>.Only replace the localhost:5000 part of the string so that the final result looks like <registry name>.azurecr.io/<your module name>.

    Udostępnianie repozytorium obrazów platformy Docker

Visual Studio Code przyjmuje podane informacje, tworzy IoT Edge, a następnie ładuje je w nowym oknie.Visual Studio Code takes the information you provided, creates an IoT Edge solution, and then loads it in a new window.

W rozwiązaniu znajdują się cztery elementy:There are four items within the solution:

  • Folder .vscode zawiera konfiguracje debugowania.A .vscode folder contains debug configurations.

  • Folder modules zawiera podfoldery dla każdego modułu.A modules folder has subfolders for each module. W folderze dla każdego modułu znajduje się plik module.js, który kontroluje sposób budowanych i wdrażanych modułów.Within the folder for each module there is a file, module.json, that controls how modules are built and deployed. Ten plik musi zostać zmodyfikowany w celu zmiany rejestru kontenerów wdrażania modułu z localhost na rejestr zdalny.This file would need to be modified to change the module deployment container registry from localhost to a remote registry. W tym momencie masz tylko jeden moduł.At this point, you only have one module. Możesz jednak dodać więcej w palecie poleceń za pomocą polecenia Azure IoT Edge: Dodaj IoT Edge Module.But you can add more in the command palette with the command Azure IoT Edge: Add IoT Edge Module.

  • Plik env zawiera listę zmiennych środowiskowych.An .env file lists your environment variables. Jeśli Azure Container Registry rejestrem, będzie w nim Azure Container Registry nazwa użytkownika i hasło.If Azure Container Registry is your registry, you'll have an Azure Container Registry username and password in it.

    Uwaga

    Plik środowiska jest tworzony tylko wtedy, gdy udostępnisz repozytorium obrazów dla modułu.The environment file is only created if you provide an image repository for the module. Jeśli akceptowana jest domyślna wartość localhost do lokalnego testowania i debugowania, nie trzeba deklarować zmiennych środowiskowych.If you accepted the localhost defaults to test and debug locally, then you don't need to declare environment variables.

  • Sekcja deployment.template.jspliku zawiera nowy moduł wraz z przykładowym modułem SimulatedTemperatureSensor, który symuluje dane, których można użyć do testowania.A deployment.template.json file lists your new module along with a sample SimulatedTemperatureSensor module that simulates data you can use for testing. Aby uzyskać więcej informacji na temat sposobu działania manifestów wdrażania, zobacz Dowiedz się, jak używać manifestów wdrażania do wdrażania modułów i ustanawiania tras.For more information about how deployment manifests work, see Learn how to use deployment manifests to deploy modules and establish routes.

Aby zobaczyć, jak działa moduł symulowanej temperatury, wyświetl kod źródłowy SimulatedTemperatureSensor.csproj.To see how the simulated temperature module works, view the SimulatedTemperatureSensor.csproj source code.

Dodawanie kolejnych modułówAdd additional modules

Aby dodać kolejne moduły do rozwiązania, uruchom polecenie Azure IoT Edge: Add IoT Edge Module (Dodaj moduł IoT Edge module) z palety poleceń.To add additional modules to your solution, run the command Azure IoT Edge: Add IoT Edge Module from the command palette. Możesz również kliknąć prawym przyciskiem myszy folder modules lub plik w widoku Eksploratora Visual Studio Code, a następnie wybrać pozycję Dodaj moduł deployment.template.json IoT Edge Module.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.

Opracowywanie modułuDevelop your module

Domyślny kod modułu dostarczany z rozwiązaniem znajduje się w następującej lokalizacji:The default module code that comes with the solution is located at the following location:

  • Azure Function (C#): moduły > < > > < modułowi nazwę > modułu .csAzure Function (C#): modules > <your module name> > <your module name>.cs
  • C#: moduły > nazwę modułu < > > Program.csC#: modules > <your module name> > Program.cs
  • Python: moduły > < nazwy modułu > > main.pyPython: modules > <your module name> > main.py
  • Node.js: moduły > < nazwę modułu > app.js>Node.js: modules > <your module name> > app.js
  • Java: moduły > < nazwę > modułu > src > main > java > com > edgemodulemodules > App.javaJava: modules > <your module name> > src > main > java > com > edgemodulemodules > App.java
  • C: moduły > nazwę modułu < > > main.cC: modules > <your module name> > main.c

Moduł i plik deployment.template.jssą tak ustawione, aby można było skompilować rozwiązanie, wypchnąć je do rejestru kontenerów i wdrożyć na urządzeniu, aby rozpocząć testowanie bez dotykania żadnego kodu.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. Moduł został zbudowany tak, aby po prostu przyjmować dane wejściowe ze źródła (w tym przypadku modułu SimulatedTemperatureSensor, który symuluje dane) i potokować je do 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.

Gdy wszystko będzie gotowe do dostosowania szablonu przy użyciu własnego kodu, użyj zestawów SDK usługi Azure IoT Hub do tworzenia modułów, które zasygną kluczowe potrzeby rozwiązań IoT, takich jak zabezpieczenia, zarządzanie urządzeniami i niezawodność.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.

Debugowanie modułu bez kontenera (C#, Node.js, Java)Debug a module without a container (C#, Node.js, Java)

W przypadku programowania w języku C#, Node.js lub Java moduł wymaga użycia obiektu ModuleClient w domyślnym kodzie modułu, aby można było uruchamiać, uruchamiać i rozsyłać komunikaty.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. Użyjesz również domyślnego wejścia input channel input1, aby podjąć akcję, gdy moduł odbierze komunikaty.You'll also use the default input channel input1 to take action when the module receives messages.

Konfigurowanie symulatora IoT Edge dla IoT Edge rozwiązaniaSet up IoT Edge simulator for IoT Edge solution

Na komputerze dewelopera można uruchomić symulator IoT Edge zamiast instalować demona zabezpieczeń IoT Edge, aby można było uruchomić IoT Edge rozwiązania.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. Na karcie Eksplorator po lewej stronie rozwiń sekcję Azure IoT Hub eksploratora.In the Explorer tab on the left side, expand the Azure IoT Hub section. Kliknij prawym przyciskiem myszy identyfikator IoT Edge, a następnie wybierz pozycję Skonfiguruj IoT Edge symulatora, aby uruchomić symulator przy użyciu parametrów połączenia urządzenia.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. Aby zobaczyć, IoT Edge symulator został pomyślnie ustawiony, odczytaj szczegóły postępu w zintegrowanym terminalu.You can see the IoT Edge Simulator has been successfully set up by reading the progress detail in the integrated terminal.

Konfigurowanie symulatora IoT Edge dla aplikacji z jednym modułemSet up IoT Edge simulator for single module app

Aby skonfigurować i uruchomić symulator, uruchom polecenie Azure IoT Edge: Uruchom IoT Edge Hub Simulator for Single Module (Symulator centrum danych dla pojedynczego modułu) Visual Studio Code palety poleceń.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 wyświetleniu monitu użyj wartości input1 z domyślnego kodu modułu (lub równoważnej wartości z kodu) jako nazwy wejściowej aplikacji.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. Polecenie wyzwala interfejs wiersza polecenia iotedgehubdev, a następnie uruchamia IoT Edge i kontener modułu narzędzia do testowania.The command triggers the iotedgehubdev CLI and then starts the IoT Edge simulator and a testing utility module container. Jeśli symulator został pomyślnie uruchomiony w trybie pojedynczego modułu, możesz zobaczyć poniższe dane wyjściowe w zintegrowanym terminalu.You can see the outputs below in the integrated terminal if the simulator has been started in single module mode successfully. Możesz również wyświetlić curl polecenie, które pomaga wysyłać wiadomości.You can also see a curl command to help send message through. Użyjesz jej później.You will use it later.

Konfigurowanie symulatora IoT Edge dla aplikacji z jednym modułem

Możesz użyć widoku Eksploratora platformy Docker w Visual Studio Code, aby wyświetlić stan działania modułu.You can use the Docker Explorer view in Visual Studio Code to see the module's running status.

Stan modułu symulatora

Kontener edgeHubDev jest rdzeniem lokalnego IoT Edge symulatora.The edgeHubDev container is the core of the local IoT Edge simulator. Może działać na komputerze dewelopera bez demona IoT Edge zabezpieczeń i udostępnia ustawienia środowiska dla natywnej aplikacji modułu lub kontenerów modułów.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. Kontener wejściowy uwidacznia interfejsy API REST, aby ułatwić mostkowanie komunikatów do docelowego kanału wejściowego w module.The input container exposes REST APIs to help bridge messages to the target input channel on your module.

Debugowanie modułu w trybie uruchamianiaDebug module in launch mode

  1. Przygotuj środowisko do debugowania zgodnie z wymaganiami języka programowania, ustaw punkt przerwania w module i wybierz konfigurację debugowania do użycia: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#

      • W Visual Studio Code terminalu < > zmień katalog na folder nazwy modułu, a następnie uruchom następujące polecenie, aby skompilować aplikację .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
        
      • Otwórz plik Program.cs i dodaj punkt przerwania.Open the file Program.cs and add a breakpoint.

      • Przejdź do widoku Visual Studio Code debugowania, wybierając pozycję Wyświetl > debugowania.Navigate to the Visual Studio Code Debug view by selecting View > Debug. Wybierz z listy < rozwijanej konfigurację > debugowania o nazwie lokalnego debugowania (.NET Core).Select the debug configuration <your module name> Local Debug (.NET Core) from the dropdown.

        Uwaga

        Jeśli twoja ścieżka programu .NET Core nie jest spójna ze ścieżką programu w pliku , musisz ręcznie zaktualizować ścieżkę programu w pliku , aby była zgodna z wartością w pliku TargetFramework launch.json launch.json csproj, aby program Visual Studio Code mógł pomyślnie uruchomić TargetFramework ten program.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

      • W Visual Studio Code terminalu < > zmień katalog na folder nazwy modułu, a następnie uruchom następujące polecenie, aby zainstalować pakiety NodeIn 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
        
      • Otwórz plik app.js i dodaj punkt przerwania.Open the file app.js and add a breakpoint.

      • Przejdź do widoku Visual Studio Code debugowania, wybierając pozycję Wyświetl > debugowania.Navigate to the Visual Studio Code Debug view by selecting View > Debug. Wybierz z listy < rozwijanej > konfigurację debugowania o nazwie local debug (Node.js) modułu.Select the debug configuration <your module name> Local Debug (Node.js) from the dropdown.

    • JavaJava

      • Otwórz plik App.java i dodaj punkt przerwania.Open the file App.java and add a breakpoint.

      • Przejdź do widoku Visual Studio Code debugowania, wybierając pozycję Wyświetl > debugowania.Navigate to the Visual Studio Code Debug view by selecting View > Debug. Wybierz z listy < rozwijanej konfigurację > debugowania o nazwie Debuguj lokalny (Java).Select the debug configuration <your module name> Local Debug (Java) from the dropdown.

  2. Kliknij przycisk Rozpocznij debugowanie lub naciśnij klawisz F5, aby rozpocząć sesję debugowania.Click Start Debugging or press F5 to start the debug session.

  3. W Visual Studio Code terminalu uruchom następujące polecenie, aby wysłać komunikat Hello world do modułu.In the Visual Studio Code integrated terminal, run the following command to send a Hello World message to your module. Jest to polecenie pokazane w poprzednich krokach podczas IoT Edge symulatora.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
    

    Uwaga

    Jeśli używasz systemu Windows, upewnij się, że powłoka zintegrowanego terminalu Visual Studio Code to Git Bash lub WSL Bash.If you are using Windows, making sure the shell of your Visual Studio Code integrated terminal is Git Bash or WSL Bash. Nie można uruchomić polecenia curl z programu PowerShell lub wiersza polecenia.You cannot run the curl command from a PowerShell or command prompt.

    Porada

    Możesz również użyć narzędzia PostMan lub innych narzędzi interfejsu API do wysyłania komunikatów za pośrednictwem usługi zamiast curl .You can also use PostMan or other API tools to send messages through instead of curl.

  4. W Visual Studio Code Debugowanie zobaczysz zmienne w panelu po lewej stronie.In the Visual Studio Code Debug view, you'll see the variables in the left panel.

  5. Aby zatrzymać sesję debugowania, wybierz przycisk Zatrzymaj lub naciśnij klawisze Shift + F5, a następnie uruchom polecenie Azure IoT Edge: Zatrzymaj symulator IoT Edge w palecie poleceń, aby zatrzymać symulator i wyczyścić go.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.

Debugowanie w trybie dołączania za IoT Edge symulatora (C#, Node.js, Java, Azure Functions)Debug in attach mode with IoT Edge Simulator (C#, Node.js, Java, Azure Functions)

Rozwiązanie domyślne zawiera dwa moduły, jeden jest modułem symulowanego czujnika temperatury, a drugi modułem potoku.Your default solution contains two modules, one is a simulated temperature sensor module and the other is the pipe module. Symulowany czujnik temperatury wysyła komunikaty do modułu potoku, a następnie komunikaty są potokowane do IoT Hub.The simulated temperature sensor sends messages to the pipe module and then the messages are piped to the IoT Hub. W utworzonym folderze modułu istnieje kilka plików platformy Docker dla różnych typów kontenerów.In the module folder you created, there are several Docker files for different container types. Użyj dowolnego z plików, które kończą się rozszerzeniem .debug, aby skompilować moduł do testowania.Use any of the files that end with the extension .debug to build your module for testing.

Obecnie debugowanie w trybie dołączania jest obsługiwane tylko w następujący sposób:Currently, debugging in attach mode is supported only as follows:

  • Moduły języka C#, w tym moduły dla Azure Functions, obsługują debugowanie w kontenerach amd64 systemu LinuxC# modules, including those for Azure Functions, support debugging in Linux amd64 containers
  • Node.js moduły obsługują debugowanie w kontenerach linux amd64 i arm32v7 oraz kontenerach systemu Windows amd64Node.js modules support debugging in Linux amd64 and arm32v7 containers, and Windows amd64 containers
  • Moduły Języka Java obsługują debugowanie w kontenerach linux amd64 i arm32v7Java modules support debugging in Linux amd64 and arm32v7 containers

Porada

Możesz przełączać się między opcjami domyślnej platformy dla rozwiązania IoT Edge, klikając element na pasku Visual Studio Code stanu.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.

Konfigurowanie symulatora IoT Edge dla IoT Edge rozwiązaniaSet up IoT Edge simulator for IoT Edge solution

Na komputerze dewelopera można uruchomić symulator IoT Edge zamiast instalować demona zabezpieczeń IoT Edge, aby można było uruchomić IoT Edge rozwiązania.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. Na karcie Eksplorator po lewej stronie rozwiń sekcję Azure IoT Hub Eksploratora.In the Explorer tab on the left side, expand the Azure IoT Hub section. Kliknij prawym przyciskiem myszy identyfikator IoT Edge urządzenia, a następnie wybierz pozycję IoT Edge Simulator, aby uruchomić symulator przy użyciu parametrów połączenia urządzenia.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. Aby zobaczyć, IoT Edge symulator został pomyślnie ustawiony, odczytaj szczegóły postępu w zintegrowanym terminalu.You can see the IoT Edge Simulator has been successfully set up by reading the progress detail in the integrated terminal.

Kompilowanie i uruchamianie kontenera na potrzeby debugowania i debugowania w trybie dołączaniaBuild and run container for debugging and debug in attach mode

  1. Otwórz plik modułu ( Program.cs , , lub ) i dodaj punkt app.js App.java <your module name>.cs przerwania.Open your module file (Program.cs, app.js, App.java, or <your module name>.cs) and add a breakpoint.

  2. W widoku Visual Studio Code Explorer kliknij prawym przyciskiem myszy plik rozwiązania, a następnie wybierz polecenie Skompilowanie i uruchamianie IoT Edge deployment.debug.template.json w symulatorze.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. Wszystkie dzienniki kontenerów modułów można obserwować w tym samym oknie.You can watch all the module container logs in the same window. Możesz również przejść do widoku platformy Docker, aby obserwować stan kontenera.You can also navigate to the Docker view to watch container status.

    Obserwowanie zmiennych

  3. Przejdź do widoku Visual Studio Code Debugowanie i wybierz plik konfiguracji debugowania dla modułu.Navigate to the Visual Studio Code Debug view and select the debug configuration file for your module. Nazwa opcji debugowania powinna być podobna do < nazwy modułu debugowania > zdalnegoThe debug option name should be similar to <your module name> Remote Debug

  4. Wybierz pozycję Rozpocznij debugowanie lub naciśnij klawisz F5.Select Start Debugging or press F5. Wybierz proces, do który chcesz dołączyć.Select the process to attach to.

  5. W Visual Studio Code Debugowanie zobaczysz zmienne w panelu po lewej stronie.In Visual Studio Code Debug view, you'll see the variables in the left panel.

  6. Aby zatrzymać sesję debugowania, najpierw wybierz przycisk Zatrzymaj lub naciśnij klawisze Shift + F5, a następnie wybierz pozycję Azure IoT Edge: Zatrzymaj IoT Edge Symulator poleceń z palety poleceń.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.

Uwaga

W poprzednim przykładzie pokazano, jak debugować moduły IoT Edge kontenerach.The preceding example shows how to debug IoT Edge modules on containers. W ten sposób dodano widoczne porty do ustawień kontenera createOptions modułu.It added exposed ports to your module's container createOptions settings. Po zakończeniu debugowania modułów zalecamy usunięcie tych ujawnionych portów dla modułów IoT Edge produkcyjnych.After you finish debugging your modules, we recommend you remove these exposed ports for production-ready IoT Edge modules.

W przypadku modułów napisanych w języku C#, w tym Azure Functions, ten przykład jest oparty na wersji debugowania programu , która zawiera debuger wiersza polecenia .NET Core (VSDBG) w obrazie kontenera podczas jego Dockerfile.amd64.debug budowania.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 debugowaniu modułów języka C# zalecamy bezpośrednie użycie pliku Dockerfile bez usługi VSDBG na potrzeby gotowych do IoT Edge produkcyjnych.After you debug your C# modules, we recommend that you directly use the Dockerfile without VSDBG for production-ready IoT Edge modules.

Debugowanie modułu za pomocą IoT Edge uruchomieniowegoDebug a module with the IoT Edge runtime

W każdym folderze modułu znajduje się kilka plików platformy Docker dla różnych typów kontenerów.In each module folder, there are several Docker files for different container types. Użyj dowolnego pliku, który kończy się rozszerzeniem .debug, aby skompilować moduł do testowania.Use any of the files that end with the extension .debug to build your module for testing.

Podczas debugowania modułów przy użyciu tej metody moduły są uruchomione w środowisku IoT Edge uruchomieniowym.When debugging modules using this method, your modules are running on top of the IoT Edge runtime. Urządzenie IoT Edge i urządzenie Visual Studio Code mogą być na tym samym komputerze lub, co zwykle, program Visual Studio Code znajduje się na maszynie dewelopera, a środowisko uruchomieniowe IoT Edge i moduły są uruchomione na innej maszynie fizycznej.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. Aby debugować z Visual Studio Code, należy:In order to debug from Visual Studio Code, you must:

  • Skonfiguruj urządzenie IoT Edge, skompilować moduły IoT Edge przy użyciu pliku Dockerfile debugowania, a następnie wdrożyć je na IoT Edge urządzeniu.Set up your IoT Edge device, build your IoT Edge module(s) with the .debug Dockerfile, and then deploy to the IoT Edge device.
  • Uwidocznij adres IP i port modułu, aby można było dołączyć debuger.Expose the IP and port of the module so that the debugger can be attached.
  • Zaktualizuj plik , aby Visual Studio Code do procesu w launch.json kontenerze na maszynie zdalnej.Update the launch.json so that Visual Studio Code can attach to the process in the container on the remote machine. Ten plik znajduje się w folderze w obszarze roboczym i jest aktualizowany za każdym razem, gdy dodajesz nowy .vscode moduł obsługujący debugowanie.This file is located in the .vscode folder in your workspace and updates each time you add a new module that supports debugging.

Kompilowanie i wdrażanie modułu na IoT Edge urządzeniuBuild and deploy your module to the IoT Edge device

  1. W Visual Studio Code otwórz plik zawierający wersję debugowania obrazów modułów z deployment.debug.template.json ustawionymi createOptions prawidłowymi wartościami.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. Jeśli opracowujesz moduł w języku Python, przed przystąpieniem wykonaj następujące kroki:If you're developing your module in Python, follow these steps before proceeding:

    • Otwórz plik i main.py dodaj ten kod po sekcji importowania:Open the file main.py and add this code after the import section:

      import ptvsd
      ptvsd.enable_attach(('0.0.0.0',  5678))
      
    • Dodaj następujący pojedynczy wiersz kodu do wywołania zwrotnego, które chcesz debugować:Add the following single line of code to the callback you want to debug:

      ptvsd.break_into_debugger()
      

      Jeśli na przykład chcesz debugować funkcję, wstaw ten wiersz receive_message_listener kodu, jak pokazano poniżej: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. W palecie Visual Studio Code poleceń:In the Visual Studio Code command palette:

    1. Uruchom polecenie Azure IoT Edge: Kompilowanie i wypychanie IoT Edge rozwiązania.Run the command Azure IoT Edge: Build and Push IoT Edge solution.

    2. Wybierz deployment.debug.template.json plik rozwiązania.Select the deployment.debug.template.json file for your solution.

  4. W sekcji Azure IoT Hub Urządzenia w widoku Visual Studio Code Explorer:In the Azure IoT Hub Devices section of the Visual Studio Code Explorer view:

    1. Kliknij prawym przyciskiem myszy identyfikator IoT Edge urządzenia, a następnie wybierz pozycję Utwórz wdrożenie dla pojedynczego urządzenia.Right-click an IoT Edge device ID and then select Create Deployment for Single Device.

      Porada

      Aby potwierdzić, że wybrane urządzenie jest urządzeniem IoT Edge, wybierz je, aby rozwinąć listę modułów i sprawdzić obecność $edgeHub i $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żde IoT Edge zawiera te dwa moduły.Every IoT Edge device includes these two modules.

    2. Przejdź do folderu konfiguracji rozwiązania, wybierz deployment.debug.amd64.json plik, a następnie wybierz pozycję Wybierz manifest wdrożenia usługi Edge.Navigate to your solution's config folder, select the deployment.debug.amd64.json file, and then select Select Edge Deployment Manifest.

Wdrożenie zostało pomyślnie utworzone z identyfikatorem wdrożenia w zintegrowanym terminalu.You'll see the deployment successfully created with a deployment ID in the integrated terminal.

Stan kontenera możesz sprawdzić, uruchamiając docker ps polecenie w terminalu.You can check your container status by running the docker ps command in the terminal. Jeśli twoje Visual Studio Code i IoT Edge uruchomieniowe działają na tej samej maszynie, możesz również sprawdzić stan w widoku Visual Studio Code Platformy Docker.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.

Uwidocznij adres IP i port modułu dla debugeraExpose the IP and port of the module for the debugger

Możesz pominąć tę sekcję, jeśli moduły są uruchomione na tej samej maszynie co program Visual Studio Code, ponieważ używasz hosta lokalnego do dołączania do kontenera i masz już poprawne ustawienia portu w pliku .debug Dockerfile, ustawieniach kontenera modułu i createOptions launch.json pliku.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. Jeśli moduły i Visual Studio Code są uruchomione na oddzielnych maszynach, wykonaj kroki dla języka programowania.If your modules and Visual Studio Code are running on separate machines, follow the steps for your development language.

  • C#, w tym Azure FunctionsC#, including Azure Functions

    Skonfiguruj kanał SSH na komputerze dewelopera i IoT Edge, a następnie edytuj launch.json plik, aby dołączyć.Configure the SSH channel on your development machine and IoT Edge device and then edit launch.json file to attach.

  • Node.jsNode.js

    • Upewnij się, że moduł na debugowanych maszynach jest uruchomiony i gotowy do dołączenia debugerów oraz że port 9229 jest dostępny zewnętrznie.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. Możesz to sprawdzić, otwierając http://<target-machine-IP>:9229/json polecenie na maszynie debugera.You can verify this by opening http://<target-machine-IP>:9229/json on the debugger machine. Ten adres URL powinien pokazywać informacje Node.js modułu do debugowania.This URL should show information about the Node.js module to be debugged.

    • Na komputerze dewelopera otwórz program Visual Studio Code, a launch.json < > < > następnie edytuj go tak, aby wartość adresu profilu debugowania zdalnego (Node.js) nazwy modułu (lub nazwa modułu Debugowanie zdalne (Node.js w kontenerze systemu Windows), jeśli moduł jest uruchomiony jako kontener systemu Windows) był adresem IP debugowanych maszyn.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

    • Skompilowanie tunelu SSH do maszyny do debugowania przez uruchomienie polecenia 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 komputerze dewelopera otwórz plik Visual Studio Code < > i edytuj nazwę modułu w pliku Remote Debug (Java), aby można było dołączyć go launch.json do maszyny docelowej.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. Aby dowiedzieć się więcej na temat launch.json edytowania i debugowania języka Java Visual Studio Code, zobacz sekcję na temat konfigurowania debugera.To learn more about editing launch.json and debugging Java with Visual Studio Code, see the section on configuring the debugger.

  • PythonPython

    • Upewnij się, że port 5678 na debugowanych maszynach jest otwarty i dostępny.Make sure that port 5678 on the machine to be debugged is open and accessible.

    • W kodzie, który został wcześniej wstawiony do polecenia , zmień ptvsd.enable_attach(('0.0.0.0', 5678)) main.py adres 0.0.0.0 na adres IP maszyny do debugowania.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. Skompilować, wypchnąć i wdrożyć IoT Edge modułu.Build, push, and deploy your IoT Edge module again.

    • Na komputerze dewelopera otwórz Visual Studio Code, a launch.json host < > następnie edytuj element tak, aby wartość profilu debugowania zdalnego (Python) nazwy modułu zawierała adres IP maszyny docelowej, a nie 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.

Debugowanie modułuDebug your module

  1. W widoku Visual Studio Code Debugowanie wybierz plik konfiguracji debugowania dla modułu.In the Visual Studio Code Debug view, select the debug configuration file for your module. Nazwa opcji debugowania powinna być podobna do < nazwy modułu Debugowanie > zdalneThe debug option name should be similar to <your module name> Remote Debug

  2. Otwórz plik modułu dla języka programowania i dodaj punkt przerwania:Open the module file for your development language and add a breakpoint:

    • Azure Function (C#): Dodaj punkt przerwania do pliku <your module name>.cs .Azure Function (C#): Add your breakpoint to the file <your module name>.cs.
    • C#: Dodaj punkt przerwania do pliku Program.cs .C#: Add your breakpoint to the file Program.cs.
    • Node.js: Dodaj punkt przerwania do pliku app.js .Node.js: Add your breakpoint to the file app.js.
    • Java: Dodaj punkt przerwania do pliku App.java .Java: Add your breakpoint to the file App.java.
    • Python: dodaj punkt przerwania do pliku main.py w metodzie wywołania zwrotnego, w której dodano ptvsd.break_into_debugger() wiersz.Python: Add your breakpoint to the file main.pyin the callback method where you added the ptvsd.break_into_debugger() line.
    • C: Dodaj punkt przerwania do pliku main.c .C: Add your breakpoint to the file main.c.
  3. Wybierz pozycję Rozpocznij debugowanie lub wybierz klawisz F5.Select Start Debugging or select F5. Wybierz proces, do który chcesz dołączyć.Select the process to attach to.

  4. W Visual Studio Code debugowania zobaczysz zmienne w panelu po lewej stronie.In the Visual Studio Code Debug view, you'll see the variables in the left panel.

Uwaga

W poprzednim przykładzie pokazano, jak debugować moduły IoT Edge kontenerach.The preceding example shows how to debug IoT Edge modules on containers. Dodano ujawnione porty do ustawień kontenera createOptions modułu.It added exposed ports to your module's container createOptions settings. Po zakończeniu debugowania modułów zalecamy usunięcie tych ujawnionych portów dla modułów IoT Edge produkcyjnych.After you finish debugging your modules, we recommend you remove these exposed ports for production-ready IoT Edge modules.

Zdalne kompilowanie i debugowanie modułuBuild and debug a module remotely

Dzięki ostatnim zmianom w aparatach Docker i Moby w celu obsługi połączeń SSH oraz nowemu ustawieniu w programie Azure IoT Tools, które umożliwia wstrzykiwanie ustawień środowiska do palety poleceń i terminali Azure IoT Edge platformy Visual Studio Code, można teraz kompilować i debugować moduły na urządzeniach zdalnych.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.

Zobacz ten wpis w blogu dla deweloperów IoT, aby uzyskać więcej informacji i instrukcje krok po kroku.See this IoT Developer blog entry for more information and step-by-step instructions.

Następne krokiNext steps

Po s zbudowaniu modułu dowiedz się, jak wdrażać Azure IoT Edge z Visual Studio Code.After you've built your module, learn how to deploy Azure IoT Edge modules from Visual Studio Code.

Aby tworzyć moduły dla urządzeń IoT Edge, opis i używanie Azure IoT Hub SDK.To develop modules for your IoT Edge devices, Understand and use Azure IoT Hub SDKs.