Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Applies to:
IoT Edge 1.5
Önemli
IoT Edge 1.5 LTS, desteklenen bir sürümdür. IoT Edge 1.4 LTS, 12 Kasım 2024'te kullanım ömrüne ulaştı. Önceki bir sürümü kullanıyorsanız bkz. Update IoT Edge.
Bu makalede, birden çok dilde IoT Edge modüllerinde hata ayıklamak için Visual Studio Code nasıl kullanılacağı açıklanmaktadır. Geliştirme bilgisayarınızda, yerel veya uzak modül kapsayıcısında modülünüzü eklemek ve hatalarını ayıklamak için Visual Studio Code kullanın.
Bu makale, iki IoT Edge geliştirme aracına yönelik adımları içerir.
- Azure IoT Edge Geliştirme Aracı komut satırı aracı (CLI). Bu araç geliştirme için tercih edilir.
- Visual Studio Code için Azure IoT Edge araçları uzantısı. Uzantı bakım modundadır.
Bu makalenin başındaki araç seçici düğmesini kullanarak araç sürümünü seçin.
Visual Studio Code aşağıdaki programlama dillerinde IoT Edge modülleri yazmayı destekler:
- C# ve C# Azure Fonksiyonları
- C
- Python
- Node.js
- Java
Azure IoT Edge şu cihaz mimarileriyle çalışır:
- AMD64
- ARM32v7
- ARM64
Desteklenen işletim sistemleri, diller ve mimariler hakkında daha fazla bilgi için bkz . Dil ve mimari desteği.
Visual Studio Code IoT Edge uzantısını kullanırken, IoT Edge Simülatörü'nde modül kodunuzu başlatabilir ve hatalarını ayıklayabilirsiniz.
Ayrıca Windows üzerinde Linux için IoT Edge (EFLOW) kullanarak bir Linux kapsayıcısında Windows geliştirme bilgisayarı ve hata ayıklama modülleri de kullanabilirsiniz. Modül geliştirmek için EFLOW kullanma hakkında daha fazla bilgi için bkz. Tutorial: Windows üzerinde Linux için IoT Edge kullanarak Linux kapsayıcılarıyla IoT Edge modülleri geliştirme.
Visual Studio Code hata ayıklama özellikleri konusunda yeniyseniz bkz. Visual Studio Code hata ayıklama.
Önkoşullar
Geliştirme makineniz olarak Windows, macOS veya Linux çalıştıran bir bilgisayar veya sanal makine kullanabilirsiniz. Windows bilgisayarlarda Windows veya Linux modülleri geliştirebilirsiniz. Linux modülleri geliştirmek için, Docker Desktop gereksinimlerini karşılayan bir Windows bilgisayar kullanın.
Geliştirme ve hata ayıklama için gerekli araçları yüklemek için Visual Studio Code öğreticisini kullanarak
Visual Studio Code yükleyin.
Şu uzantıları ekleyin:
-
Azure IoT Edge uzantısı. Azure IoT Edge araçları Visual Studio Code uzantısı için
bakım modundadır . - Azure IoT Hub uzantısı.
Bir cihazda modülünüzün hatalarını ayıklamak için şunları yapmanız gerekir:
- En az bir IoT Edge cihazı olan etkin bir IoT Hub.
- Fiziksel IoT Edge cihazı veya sanal cihaz. Linux için
quickstart içindeki adımları izleyerek Azure'de bir sanal cihaz oluşturun. - Özel bir IoT Edge modülü. Özel modül oluşturmak için Visual Studio Code öğreticisini kullanarak
Geldir Azure IoT Edge modüllerindeki adımları izleyin.
IoT Edge simülatörünü kullanarak kapsayıcı olmadan hata ayıklama
IoT Edge Simülatörü, geliştirme bilgisayarınızda çalışan ve tek bir IoT Edge cihazın davranışını simüle eden bir araçtır. IoT Edge modüllerinizi fiziksel bir cihaz veya tam bir IoT Edge cihaz çalışma zamanı olmadan geliştirmek ve test etmek için IoT Edge Simülatörü'ni kullanabilirsiniz.
Aşağıdaki hata ayıklama adımları, özel bir modül oluşturduğunuzu varsayar. Özel modül oluşturmadıysanız Visual Studio Code öğreticisini kullanarak
C veya Python kullanılırken kapsayıcı olmadan modülde hata ayıklama kullanılamaz.
IoT Edge simülatörü kullanarak ekleme modunda hata ayıklama
C veya Python için ekleme modunda hata ayıklama kullanılamaz.
IoT Edge çalışma zamanıyla modülde hata ayıklama
Her modül klasörü, farklı kapsayıcı türleri için birkaç Docker dosyası içerir. Test için modülünüzü derlemek için .debug uzantısıyla biten herhangi bir dosyayı kullanın.
Bu yöntemi kullanarak modüllerde hata ayıkladığınızda modülleriniz IoT Edge çalışma zamanının üzerinde çalışır. IoT Edge cihaz ve Visual Studio Code aynı makinede çalıştırılabilir, ancak genellikle IoT Edge çalışma zamanı ve modüller başka bir fiziksel makinede çalışırken Visual Studio Code geliştirme makinesinde çalışır. Visual Studio Code hatalarını ayıklamak için:
- IoT Edge cihazınızı ayarlayın, .debug Dockerfile ile IoT Edge modüllerinizi oluşturun ve ardından IoT Edge cihaza dağıtın.
- Visual Studio Code uzak makinedeki bir kapsayıcıdaki sürece bağlanabilmesi için
launch.jsongüncelleyin. Bu dosyayı çalışma alanınızdaki klasörde bulabilirsiniz ve hata ayıklamayı.vscodedestekleyen yeni bir modül eklediğinizde bu dosya güncelleştirilir. - Uzak makinedeki konteynere bağlanmak için Uzak SSH hata ayıklamasını kullanın.
Modülünüzü oluşturun ve bir IoT Edge cihazına dağıtın
Visual Studio Code'da deployment.debug.template.json dağıtım bildirim dosyasını açın.
deployment manifest hedeflenen IoT Edge cihazında yapılandırılacak modülleri açıklar. Dağıtımdan önce Azure Container Registry kimlik bilgilerinizi ve modül görüntülerinizi uygun createOptions değerleriyle güncelleştirin. createOption değerleri hakkında daha fazla bilgi için bkz. IoT Edge modülleri için kapsayıcı oluşturma seçeneklerini yapılandırma.
Modül görüntünüzü depolamak için bir Azure Container Registry kullanıyorsanız, kimlik bilgilerinizi deployment.debug.template.json>>registryCredentials bölümüne ekleyin. myacr değerini her iki yerde de kendi kayıt defteri adınızla değiştirin ve parolanızı ve Oturum açma sunucusu adresinizi girin. Örneğin:
"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" } } } }, ...Listelenen her sistem (edgeHub ve edgeAgent) ve özel modül (örneğin, filtermodule) için createOptions değerine aşağıdaki dizeli içeriği ekleyin veya değiştirin. Gerekirse değerleri değiştirin.
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"Örneğin, filtermodule yapılandırması şuna benzer olmalıdır:
"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\"}]}}}" }
- Visual Studio Code komut paletinde Azure IoT Edge: Build and Push IoT Edge solution komutunu çalıştırın.
-
deployment.debug.template.jsonÇözümünüz için dosyayı seçin. - Visual Studio Code Gezgini görünümünün Azure IoT Hub>Devices bölümünde, dağıtım için IoT Edge cihaz adına sağ tıklayın ve Tek Cihaz için Dağıtım Oluştur öğesini seçin.
İpucu
Seçtiğiniz cihazın IoT Edge bir cihaz olduğunu onaylamak için modül listesini genişletmek için seçin ve $edgeHub ve $edgeAgent varlığını doğrulayın. Her IoT Edge cihaz bu iki modülü içerir.
- Çözümünüzün yapılandırma klasörüne gidin,
deployment.debug.amd64.jsondosyasını seçin ve ardından Edge Dağıtım Bildirimini Seç'i seçin.
Terminalde docker ps komutunu çalıştırarak cihazınızla veya sanal makinenizle kapsayıcı durumunu denetleyin. komutunu çalıştırdıktan sonra kapsayıcınızın listelendiğini görmeniz gerekir. Visual Studio Code ve IoT Edge çalışma zamanı aynı makinede çalıştırılırsa, Visual Studio Code Docker görünümünde durumu denetleyin.
Önemli
Görüntüleriniz için Azure Container Registry gibi özel bir kayıt defteri kullanıyorsanız, görüntüleri göndermek için kimlik doğrulaması yapmanız gerekebilir. Kimlik doğrulaması için docker login <Azure Container Registry login server> veya az acr login --name <Azure Container Registry name> kullanın.
Docker'da oturum açma
Kapsayıcı görüntünüzü kayıt defterindeki depolama alanına gönderebilmesi için docker'a kapsayıcı kayıt defteri kimlik bilgilerinizi sağlayın.
Kayıt defterini oluşturduktan sonra kaydettiğiniz Azure Container Registry kimlik bilgileriyle Docker'da oturum açın.
docker login -u <Azure Container Registry username> -p <Azure Container Registry password> <Azure Container Registry login server>kullanılmasını
--password-stdinöneren bir güvenlik uyarısı alabilirsiniz. Üretim senaryoları için önerilen en iyi yöntem olsa da, bu öğreticinin kapsamı dışındadır. Daha fazla bilgi için docker oturum açma başvurusuna bakın.Azure Container Registry için oturum açın. komutunu kullanmak için
azyüklemeniz gerekebilir. Bu komut , Ayarlar>Erişim anahtarları'ndaki kapsayıcı kayıt defterinizde bulunan kullanıcı adınızı ve parolanızı ister.az acr login -n <Azure Container Registry name>
İpucu
Bu öğreticinin herhangi bir noktasında oturumunuz kapanırsa, devam etmek için Docker ve Azure Container Registry oturum açma adımlarını yineleyin.
Docker imajı oluştur
Docker görüntüsünü oluşturmak için modülün Dockerfile dosyasını kullanın.
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
Örneğin, yerel kayıt defteri veya Azure Container Registry görüntüsünü oluşturmak için aşağıdaki komutları kullanın:
# 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"
Gönderme modülü Docker görüntüsü
Modül görüntünüzü yerel kayıt defterine veya kapsayıcı kayıt defterine gönderin.
docker push <ImageName>
Örneğin:
# 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
Modülü IoT Edge cihazına dağıtma
modülleri Azure IoT Hub dağıtmak için IoT Edge Azure CLI set-modules komutunu kullanın. Örneğin, deployment.debug.template.json dosyasında tanımlanan modülleri IoT Hub my-iot-hub IoT Edge cihazı my-device dağıtmak için aşağıdaki komutu kullanın:
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>"
İpucu
IoT Hub paylaşılan erişim anahtarınızı Azure portalınızda IoT Hub >Güvenlik ayarları>Shared erişim ilkeleri>iothubowner bulabilirsiniz.
Modülünüzde hata ayıklama
Uzak bir cihazdaki modüllerde hata ayıklamak için Visual Studio Code'da Uzaktan SSH hata ayıklamasını kullanın.
Remote Geliştirme uzantısı yükleyerek uzaktan Visual Studio Code hata ayıklamayı etkinleştirin. Visual Studio Code uzaktan hata ayıklama hakkında daha fazla bilgi için bkz. Visual Studio Code Uzaktan Geliştirme.
Visual Studio Code'da Uzaktan SSH hata ayıklamasını kullanma hakkında ayrıntılı bilgi için bkz. SSH kullanarak Geliştirme.
Visual Studio Code Hata Ayıklama görünümünde modülün hata ayıklama yapılandırma dosyasını seçin. Varsayılan olarak, .debug Dockerfile, modülün kapsayıcı createOptions ayarları ve launch.json dosyası localhost kullanır.
Hata Ayıklamayı Başlat veya F5'i seçin, ardından bağlanacak işlemi seçin. Visual Studio Code Hata Ayıklama görünümünde, sol panelde değişkenler görürsünüz.
Docker uzak SSH kullanarak hata ayıklama
Docker ve Moby altyapıları, uzak bir cihaza bağlı Visual Studio Code hata ayıklamanıza olanak sağlayan kapsayıcılara yönelik SSH bağlantılarını destekler. Bu özelliği kullanabilmeniz için önce aşağıdaki önkoşulları karşılamanız gerekir.
Uzak SSH hata ayıklama önkoşulları, kullandığınız dile bağlı olarak farklılık gösterebilir. Aşağıdaki bölümlerde .NET kurulumu açıklanmaktadır. Diğer diller hakkında bilgi için genel bakış için bkz . SSH kullanarak Uzaktan Geliştirme. Uzaktan hata ayıklamayı yapılandırma hakkındaki ayrıntılar, Visual Studio Code belgelerinde her dil için hata ayıklama bölümlerine eklenmiştir.
Docker SSH tüneli yapılandırma
Geliştirme bilgisayarınızda SSH tüneli ayarlamak için Docker SSH tüneli'ndeki adımları izleyin. SSH tüneli için ortak/özel anahtar çifti kimlik doğrulaması ve uzak cihaz uç noktasını tanımlayan bir Docker bağlamı gerekir.
Docker'a bağlanmak için kök ayrıcalıklar gerekir. Uzak cihazdaki Docker daemon'a bağlanmaya izin vermek için Docker'ı kök olmayan kullanıcı olarak yönetme sayfasındaki adımları izleyin. Hata ayıklamayı bitirdiğinizde, kullanıcınızı Docker grubundan kaldırmak isteyebilirsiniz.
Visual Studio Code komut paletini (Ctrl+Shift+P) kullanarak uzak makineye işaret eden Docker bağlamını etkinleştirmek için Docker Bağlamı: Use komutunu çalıştırın. Bu komut hem Visual Studio Code hem de Docker CLI'nin uzak makine bağlamını kullanmasına olanak tanır.
İpucu
Tüm Docker komutları geçerli bağlamı kullanır. Hata ayıklamayı bitirdiğinizde bağlamı varsayılana geri döndürmeyi unutmayın.
Uzak Docker bağlamlarının etkin olduğunu doğrulamak için uzak cihazda çalışan kapsayıcıları listeleyin:
docker psÇıkışta, aşağıdakine benzer şekilde uzak cihazda çalışan kapsayıcılar listelenir:
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.vscode dizininde launch.json Visual Studio Code açın ve yeni bir yapılandırma ekleyin. Yapılandırma ekle'yi seçin ve ardından modülünüz için eşleşen uzaktan ekleme şablonunu seçin. Örneğin, aşağıdaki yapılandırma .NET Core'a yöneliktir. PipeArgs içindeki -H parametresinin değerini cihazınızın DNS adı veya IP adresi olarak değiştirin.
"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 },
Modülünüzde uzaktan hata ayıklama
Visual Studio Code Hata Ayıklama görünümünde hata ayıklama yapılandırmasını Remote Debug IoT Edge Module (.NET Core) seçin.
Hata Ayıklamayı Başlat'ı veya F5'i seçin. Bağlanacak işlemi seçin.
Visual Studio Code Hata Ayıklama görünümünde, değişkenleri sol panelde görürsünüz.
Visual Studio Code'da özel modülünüz için kesme noktaları ayarlayın.
Bir kesme noktasına isabet edildiğinde değişkenleri inceleyebilir, kodda ilerleyebilir ve modülünüzde hata ayıklayabilirsiniz.
Not
Yukarıdaki örnekte, uzak kapsayıcılarda IoT Edge modüllerinde hata ayıklama gösterilmektedir. Örnek, uzak bir Docker bağlamı ekler ve uzak cihazdaki Docker ayrıcalıklarına değişiklik yapar. Modüllerinizde hata ayıklamayı tamamladıktan sonra Docker bağlamınızı varsayılan olarak ayarlayın ve kullanıcı hesabınızdan ayrıcalıkları kaldırın.
Raspberry Pi cihazı kullanan bir örnek için bu IoT Geliştirici blog girdisini inceleyin.
Sonraki adımlar
Modülünüzü derledikten sonra Azure IoT Edge modüllerini nasıl dağıtacağınızı öğrenin.
IoT Edge cihazlarınıza yönelik modüller geliştirmek için Azure IoT Hub SDK hakkında bilgi edinin ve kullanın.