تصحيح أخطاء وحدات Azure IoT Edge النمطية باستخدام Visual Studio Code
ينطبق على: IoT Edge 1.5 IoT Edge 1.4
هام
IoT Edge 1.5 LTS وIoT Edge 1.4 LTS هي إصدارات مدعومة. IoT Edge 1.4 LTS هو نهاية العمر الافتراضي في 12 نوفمبر 2024. إذا كنت تستخدم إصدارا سابقا، فشاهد تحديث IoT Edge.
توضح لك هذه المقالة كيفية استخدام Visual Studio Code لتصحيح أخطاء وحدات IoT Edge بلغات متعددة. على كمبيوتر التطوير الخاص بك، يمكنك استخدام Visual Studio Code لإرفاق الوحدة النمطية وتصحيحها في حاوية وحدة نمطية محلية أو بعيدة.
تتضمن هذه المقالة خطوات لأدوتي تطوير IoT Edge.
- أداة سطر الأوامر Azure IoT Edge Dev Tool (CLI). هذه الأداة مفضلة للتطوير.
- أدوات Azure IoT Edge لملحق Visual Studio Code . الملحق في وضع الصيانة.
استخدم زر محدد الأداة في بداية هذه المقالة لتحديد إصدار الأداة.
يدعم Visual Studio Code كتابة وحدات IoT Edge النمطية بلغات البرمجة التالية:
- وظائف C# وC# Azure
- C
- Python
- Node.js
- Java
يدعم Azure IoT Edge بنيات الجهاز التالية:
- AMD64
- ARM32v7
- ARM64
لمزيد من المعلومات حول أنظمة التشغيل واللغات والبنى المدعومة، راجع دعم اللغة والهندسة المعمارية.
عند استخدام ملحق Visual Studio Code IoT Edge، يمكنك أيضا تشغيل وتصحيح التعليمات البرمجية للوحدة النمطية في IoT Edge Simulator.
يمكنك أيضا استخدام كمبيوتر تطوير Windows وتصحيح الوحدات النمطية في حاوية Linux باستخدام IoT Edge ل Linux على Windows (EFLOW). لمزيد من المعلومات حول استخدام EFLOW لتطوير الوحدات النمطية، راجع البرنامج التعليمي: تطوير وحدات IoT Edge النمطية باستخدام حاويات Linux باستخدام IoT Edge ل Linux على Windows.
إذا لم تكن على دراية بقدرات تصحيح الأخطاء في Visual Studio Code، فشاهد تصحيح أخطاء Visual Studio Code.
المتطلبات الأساسية
يمكنك استخدام جهاز كمبيوتر أو جهاز ظاهري يعمل Windows أو macOS أو Linux كآلة تطوير. على أجهزة الكمبيوتر Windows، يمكنك تطوير الوحدات النمطية لـ Windows أو Linux. لتطوير وحدات Linux النمطية، استخدم كمبيوتر Windows يلبي متطلبات Docker Desktop.
لتثبيت الأدوات المطلوبة للتطوير وتصحيح الأخطاء، أكمل البرنامج التعليمي تطوير وحدات Azure IoT Edge باستخدام Visual Studio Code .
تثبيت التعليمات البرمجية لتطبيق Visual Studio
أضف الملحقات التالية:
- ملحق Azure IoT Edge . أدوات Azure IoT Edge لملحق Visual Studio Code في وضع الصيانة.
- ملحق Azure IoT Hub .
لتصحيح أخطاء الوحدة النمطية على جهاز، تحتاج إلى:
- مركز IoT نشط مع جهاز IoT Edge واحد على الأقل.
- جهاز IoT Edge فعلي أو جهاز ظاهري. لإنشاء جهاز ظاهري في Azure، اتبع الخطوات الواردة في التشغيل السريع ل Linux.
- وحدة IoT Edge مخصصة. لإنشاء وحدة نمطية مخصصة، اتبع الخطوات الواردة في البرنامج التعليمي تطوير وحدات Azure IoT Edge النمطية باستخدام Visual Studio Code .
تصحيح الأخطاء بدون حاوية باستخدام محاكي IoT Edge
محاكي IoT Edge هو أداة تعمل على كمبيوتر التطوير الخاص بك وتحاكي سلوك جهاز IoT Edge واحد. يمكنك استخدام IoT Edge Simulator لتطوير واختبار وحدات IoT Edge دون جهاز فعلي أو وقت تشغيل كامل لجهاز IoT Edge.
تفترض خطوات تصحيح الأخطاء التالية أنك قمت بالفعل بإنشاء وحدة نمطية مخصصة. إذا لم تكن قد أنشأت وحدة نمطية مخصصة، فاتبع الخطوات الواردة في البرنامج التعليمي تطوير وحدات Azure IoT Edge النمطية باستخدام Visual Studio Code .
لا يتوفر تصحيح أخطاء وحدة دون حاوية عند استخدام C أو Python.
تصحيح الأخطاء في وضع الإرفاق باستخدام محاكي IoT Edge
تصحيح الأخطاء في وضع إرفاق غير مدعوم ل C أو Python.
تصحيح وحدة نمطية مع وقت تشغيل IoT Edge
في كل مجلد وحدة نمطية، هناك العديد من ملفات Docker لأنواع الحاويات المختلفة. استخدام أي من الملفات التي تنتهي مع ملحق .debug لإنشاء الوحدة النمطية للاختبار.
عند تصحيح الوحدات النمطية باستخدام هذا الأسلوب، يتم تشغيل الوحدات النمطية الخاصة بك أعلى وقت تشغيل IoT Edge. يمكن أن يكون جهاز IoT Edge ورمز Visual Studio الخاص بك على نفس الجهاز، أو أكثر عادة، Visual Studio التعليمات البرمجية موجودة على جهاز التطوير ويتم تشغيل وقت تشغيل IoT Edge والوحدات النمطية على جهاز فعلي آخر. لتصحيح الأخطاء من Visual Studio Code، يجب عليك:
- قم بإعداد جهاز IoT Edge الخاص بك، وأنشئ وحدات IoT Edge النمطية الخاصة بك باستخدام .debug Dockerfile، ثم انشر على جهاز IoT Edge.
- تحديث
launch.json
بحيث يمكن إرفاق Visual Studio Code بالعملية في حاوية على الجهاز البعيد. يمكنك العثور على هذا الملف في.vscode
المجلد في مساحة العمل الخاصة بك، ويتم تحديثه في كل مرة تضيف فيها وحدة نمطية جديدة تدعم تصحيح الأخطاء. - استخدم تصحيح أخطاء SSH عن بعد لإرفاقها بالحاوية على الجهاز البعيد.
إنشاء الوحدة النمطية ونشرها على جهاز IoT Edge
في Visual Studio Code، افتح ملف بيان توزيع deployment.debug.template.json . يصف بيان التوزيع الوحدات النمطية التي سيتم تكوينها على جهاز IoT Edge المستهدف. قبل النشر، تحتاج إلى تحديث بيانات اعتماد Azure Container Registry وصور الوحدة النمطية بالقيم المناسبة createOptions
. لمزيد من المعلومات حول قيم createOption، راجع كيفية تكوين خيارات إنشاء الحاوية لوحدات IoT Edge النمطية.
إذا كنت تستخدم Azure Container Registry لتخزين صورة الوحدة النمطية الخاصة بك، فأضف بيانات الاعتماد الخاصة بك إلى قسم edgeAgent>settings>registryCredentials في deployment.debug.template.json. استبدل myacr باسم السجل الخاص بك في كلا المكانين وقدم كلمة المرور وعنوان خادم تسجيل الدخول. على سبيل المثال:
"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" } } } }, ...
أضف المحتوى المتسلسل التالي أو استبدله بقيمة createOptions لكل نظام (edgeHub وedgeAgent) والوحدة النمطية المخصصة (على سبيل المثال، filtermodule) المدرجة. قم بتغيير القيم إذا لزم الأمر.
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
على سبيل المثال، يجب أن يكون تكوين عامل التصفية مشابها لما يلي:
"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، قم بتشغيل الأمر Azure IoT Edge: إنشاء ودفع حل IoT Edge.
- حدد
deployment.debug.template.json
الملف الخاص بحلك. - في قسم Azure IoT Hub>Devices في طريقة عرض Visual Studio Code Explorer، انقر بزر الماوس الأيمن فوق اسم جهاز IoT Edge للنشر ثم اختر Create Deployment for Single Device.
تلميح
للتأكد من أن الجهاز الذي اخترته هو جهاز IoT Edge، حدد هذا الجهاز لتوسيع قائمة الوحدات النمطية والتحقق من وجود $edgeHub$edgeAgent. يتضمن كل جهاز IoT Edge هاتين الوحدتين.
- انتقل إلى مجلد التكوين الخاص بحلك، وحدد
deployment.debug.amd64.json
الملف، ثم حدد تحديد Edge Deployment Manifest.
يمكنك التحقق من حالة الحاوية من جهازك أو جهازك الظاهري عن طريق تشغيل docker ps
الأمر في محطة طرفية. يجب أن ترى الحاوية مدرجة بعد تشغيل الأمر . إذا تم تشغيل التعليمات البرمجية Visual Studio ووقت تشغيل IoT Edge على نفس الجهاز، يمكنك أيضا التحقق من الحالة في طريقة عرض Visual Studio Code Docker.
هام
إذا كنت تستخدم سجلا خاصا مثل Azure Container Registry لصورك، فقد تحتاج إلى المصادقة لدفع الصور. استخدم docker login <Azure Container Registry login server>
أو az acr login --name <Azure Container Registry name>
للمصادقة.
تسجيل الدخول إلى Docker
قم بتوفير بيانات اعتماد سجل الحاوية إلى Docker بحيث يمكنه دفع صورة الحاوية إلى التخزين في السجل.
سجل الدخول إلى Docker باستخدام بيانات اعتماد Azure Container Registry التي قمت بحفظها بعد إنشاء السجل.
docker login -u <Azure Container Registry username> -p <Azure Container Registry password> <Azure Container Registry login server>
قد تتلقى تحذيرًا أمنيًا يوصي باستخدام
--password-stdin
. في حين أن هذه أفضل ممارسة موصى بها لسيناريوهات الإنتاج، فإنها خارج نطاق هذا البرنامج التعليمي. لمزيد من المعلومات، راجع مرجع تسجيل دخول docker.سجّل الدخول إلى Azure Container Registry. قد تحتاج إلى تثبيت Azure CLI لاستخدام
az
الأمر . يطلب هذا الأمر العثور على اسم المستخدم وكلمة المرور في سجل الحاوية في مفاتيح الإعدادات> Access.az acr login -n <Azure Container Registry name>
تلميح
إذا قمت بتسجيل الخروج في أي وقت في هذا البرنامج التعليمي، كرر خطوات تسجيل الدخول Docker وAzure Container Registry للمتابعة.
إنشاء صورة Docker للوحدة النمطية
استخدم Dockerfile الخاص بالوحدة النمطية لإنشاء صورة Docker للوحدة النمطية.
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
على سبيل المثال، لإنشاء صورة للسجل المحلي أو Azure Container Registry، استخدم الأوامر التالية:
# Build the image for the local registry
docker build --rm -f "./modules/filtermodule/Dockerfile.amd64.debug" -t localhost:5000/filtermodule:0.0.1-amd64 "./modules/filtermodule"
# Or build the image for an Azure Container Registry
docker build --rm -f "./modules/filtermodule/Dockerfile.amd64.debug" -t myacr.azurecr.io/filtermodule:0.0.1-amd64 "./modules/filtermodule"
صورة Docker لوحدة الدفع
ادفع صورة الوحدة النمطية إلى السجل المحلي أو سجل الحاوية.
docker push <ImageName>
على سبيل المثال:
# 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
نشر الوحدة النمطية على جهاز IoT Edge
استخدم الأمر IoT Edge Azure CLI set-modules لنشر الوحدات النمطية إلى Azure IoT Hub. على سبيل المثال، لنشر الوحدات النمطية المحددة في ملف deployment.debug.template.json إلى IoT Hub my-iot-hub لجهاز IoT Edge الخاص بي، استخدم الأمر التالي:
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>"
تلميح
يمكنك العثور على مفتاح الوصول المشترك ل IoT Hub في مدخل Microsoft Azure في إعدادات أمان IoT Hub >نهج>الوصول>المشترك iothubowner.
تصحيح الوحدة النمطية
لتصحيح الوحدات النمطية على جهاز بعيد، يمكنك استخدام تصحيح أخطاء SSH عن بعد في Visual Studio Code.
لتمكين تصحيح أخطاء Visual Studio Code عن بعد، قم بتثبيت ملحق التطوير عن بعد. لمزيد من المعلومات حول تصحيح أخطاء Visual Studio Code عن بعد، راجع Visual Studio Code Remote Development.
للحصول على تفاصيل حول كيفية استخدام تصحيح أخطاء SSH عن بعد في Visual Studio Code، راجع التطوير عن بعد باستخدام SSH
في طريقة العرض تصحيح التعليمات البرمجية Visual Studio حدد ملف تكوين التصحيح الوحدة النمطية. بشكل افتراضي، يستخدم .debug Dockerfile وإعدادات حاوية createOptions
الوحدة النمطية launch.json
والملف localhost.
حدد بدء تصحيح الأخطاء أو حدد F5. حدد العملية التي تريد إرفاقها. في طريقة عرض تصحيح التعليمات البرمجية Visual Studio، ترى المتغيرات في اللوحة اليسرى.
تتبع الأخطاء باستخدام Docker Remote SSH
تدعم محركات Docker و Moby اتصالات SSH بالحاويات التي تسمح لك بتصحيح الأخطاء في Visual Studio Code المتصل بجهاز بعيد. تحتاج إلى تلبية المتطلبات الأساسية التالية قبل أن تتمكن من استخدام هذه الميزة.
قد تختلف متطلبات تصحيح أخطاء SSH عن بعد اعتمادا على اللغة التي تستخدمها. تصف الأقسام التالية إعداد .NET. للحصول على معلومات حول اللغات الأخرى، راجع التطوير عن بعد باستخدام SSH للحصول على نظرة عامة. يتم تضمين تفاصيل حول كيفية تكوين تصحيح الأخطاء عن بعد في أقسام تصحيح الأخطاء لكل لغة في وثائق Visual Studio Code.
تكوين نفق Docker SSH
اتبع الخطوات الواردة في نفق Docker SSH لتكوين نفق SSH على كمبيوتر التطوير الخاص بك. يتطلب نفق SSH مصادقة زوج مفاتيح عام/خاص وسياق Docker الذي يحدد نقطة نهاية الجهاز البعيد.
يتطلب الاتصال إلى Docker امتيازات على مستوى الجذر. اتبع الخطوات الواردة في إدارة docker كمستخدم غير جذر للسماح بالاتصال ب Docker daemon على الجهاز البعيد. عند الانتهاء من تصحيح الأخطاء، قد ترغب في إزالة المستخدم من مجموعة Docker.
في Visual Studio Code، استخدم لوحة الأوامر (Ctrl+Shift+P) لإصدار سياق Docker: استخدم الأمر لتنشيط سياق Docker الذي يشير إلى الجهاز البعيد. يتسبب هذا الأمر في استخدام كل من Visual Studio Code وDocker CLI لسياق الجهاز البعيد.
تلميح
تستخدم كافة أوامر Docker السياق الحالي. تذكر إعادة تغيير السياق إلى الوضع الافتراضي عند الانتهاء من تصحيح الأخطاء.
للتحقق من أن سياق Docker البعيد نشط، قم بإدراج الحاويات قيد التشغيل على الجهاز البعيد:
docker ps
يجب أن يسرد الإخراج الحاويات التي تعمل على الجهاز البعيد مشابهة:
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 ، أضف تكوينا جديدا إلى launch.json عن طريق فتح الملف في Visual Studio Code. حدد إضافة تكوين ثم اختر قالب إرفاق عن بعد المطابق للوحدة النمطية الخاصة بك. على سبيل المثال، التكوين التالي ل .NET Core. تغيير قيمة المعلمة -H في PipeArgs إلى اسم DNS لجهازك أو عنوان IP.
"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 },
تصحيح أخطاء الوحدة النمطية عن بعد
في طريقة عرض تصحيح التعليمات البرمجية Visual Studio، حدد تكوين تتبع الأخطاء وحدة IoT Edge النمطية عن بعد (.NET Core) .
حدد بدء تصحيح الأخطاء أو حدد F5. حدد العملية التي تريد إرفاقها.
في طريقة عرض تصحيح التعليمات البرمجية Visual Studio، ترى المتغيرات في اللوحة اليسرى.
في Visual Studio Code، قم بتعيين نقاط التوقف في الوحدة النمطية المخصصة.
عند الوصول إلى نقطة توقف، يمكنك فحص المتغيرات، والتنقل عبر التعليمات البرمجية، وتصحيح الوحدة النمطية الخاصة بك.
إشعار
يوضح المثال السابق كيفية تصحيح أخطاء وحدات IoT Edge النمطية على حاويات بعيدة. يضيف المثال سياق Docker عن بعد ويتغير إلى امتيازات Docker على الجهاز البعيد. بعد الانتهاء من تصحيح أخطاء الوحدات النمطية الخاصة بك، قم بتعيين سياق Docker الخاص بك إلى الافتراضي وإزالة الامتيازات من حساب المستخدم الخاص بك.
راجع إدخال مدونة مطور IoT هذا للحصول على مثال باستخدام جهاز Raspberry Pi.
الخطوات التالية
بعد إنشاء الوحدة النمطية الخاصة بك، تعرف على كيفية نشر وحدات Azure IoT Edge النمطية من Visual Studio Code.
لتطوير وحدات لأجهزة IoT Edge الخاصة بك، فهم واستخدام Azure IoT Hub SDKs.