ابحث عن Go in VS Code Extensions وقم بتثبيته.
ستحتاج إلى تثبيت Delve للحصول على تصحيح الأخطاء (نقاط التوقف، والتنقل، وما إلى ذلك) في VS Code.
go install github.com/go-delve/delve/cmd/dlv@latest
إذا استخدمت asdfto install Go، فسيكون موقع delve موجودًا في:
~/.asdf/shims/dlv
قد ترغب في تشغيل asdf reshim بعد تثبيت حزمة go.
نظرًا لأن GoLang هي لغة مجمعة، فسيتم تجميع التعليمات البرمجية في ملف واحد قابل للتنفيذ. أثناء التطوير، سيتطلب إجراء التغييرات منا إعادة الترجمة باستمرار، وهو ما يمكن أن يكون عملية يدوية، خاصة في VS Code.
سوف نستخدم https://github.com/air-verse/air للقيام بإعادة التحميل المباشر لنا.
إنها أداة سطر أوامر تحتاج إلى تشغيلها مرة واحدة فقط داخل مجلد المشروع الخاص بك لمراقبة التغييرات.
تثبيت الحزمة. على افتراض أنك حصلت على الإصدار 1.22 أو أعلى.
go install github.com/air-verse/air@latest
إذا استخدمت قوات الدفاع الذاتي الجوية لتثبيت Go، فسيكون الهواء موجودًا في:
~/.asdf/shims/air
تهيئة ملف التكوين air.toml في جذر المشروع الخاص بك
cd ~/myproject air init
تحرير أمر air.toml [[go build]] إلى:
- الكل: يجب تطبيق العلامات على جميع الحزم في حزم البناء
- -N: تم تعطيل التحسينات للتأكد من أن التعليمات البرمجية التي تم إنشاؤها أقرب إلى التعليمات البرمجية المصدر لتسهيل تصحيح الأخطاء
- -l: تعطيل التحسين المضمن حيث يتم توسيع الوظائف الصغيرة في مكانها لتقليل الحمل الزائد لاستدعاءات الوظائف، مما يسهل تصحيح الأخطاء
- الاستدلال من مرجع Delve
- cmd = "go build -o ./tmp/main ." cmd = 'CGO_ENABLED=0 go build -gcflags=all="-N -l"-o ./tmp/main .'"'
[!معلومات]
سيتم تشغيل الهواء بالتكوينات الافتراضية إذا:
- ملف air.toml غير صالح
- قم بتشغيله في مجلد المشروع الخاص بك عن طريق تشغيل الأمر الجوي
لن يستخدم ملف air.toml الخاص بك.
قم بتحرير air.toml full_bin لتشغيل الملف الثنائي المدمج باستخدام [[Delve]].
- full_bin = "" full_bin = "dlv exec ./tmp/main --listen=127.0.0.1:2345 --headless=true --api-version=2 --accept-multiclient --continue --log --"
سيؤدي هذا إلى تشغيل Delve على المنفذ 2345.
قم بتشغيل الهواء في مجلد المشروع الخاص بك. يجب أن تشاهد الإخراج التالي.
> cd ~/my-project > air __ _ ___ / /\ | | | |_) /_/--\ |_| |_| \_ v1.52.3, built with Go go1.22.5 mkdir ~/my-project/tmp watching . !exclude tmp building... running... API server listening at: 127.0.0.1:2345 2024-07-28T18:47:07 07:00 info layer=debugger launching process with args: [./tmp/main] 2024-07-28T18:47:09 07:00 debug layer=debugger entryPoint 0x1006e8000 machoOff 0x100000000 2024-07-28T18:47:09 07:00 warning layer=debugger debug_frame workaround not applied: function internal/abi.(*RegArgs).IntRegArgAddr (at 0x1006e9070) covered by 0x1006e9070-0x1006e9110 2024-07-28T18:47:09 07:00 debug layer=debugger Adding target 11503 "/Users/alaay/projects/scheduleasy/tmp/main" 2024-07-28T18:47:09 07:00 debug layer=debugger continuing 2024-07-28T18:47:09 07:00 debug layer=debugger ContinueOnce 2024/07/28 18:47:09 Starting server on :5602
في ملف .vscode/launch.config، أضف ما يلي:
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Attach to Air", "type": "go", "request": "attach", "mode": "remote", "port": 2345, "host": "127.0.0.1" } ] }
في VS Code Run and Debug (CMD SHIFT D)، ابدأ التصحيح باستخدام Attach to Air
[!معلومات] رمز VS غير قادر على الاتصال
إذا كان VS Code غير قادر على الاتصال، فمن المرجح أن Delve لا يعمل على المنفذ 2345. حاول استخدام lsof -i :2345 للتحقق مما إذا كان dlv يعمل باستخدام هذا المنفذ. إذا كان قيد التشغيل، يجب أن تشاهد:$ lsof -i :2345 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dlv 15464 username 3u IPv4 0x201bff14586139e3 0t0 TCP localhost:dbm (LISTEN)
Go هي لغة مجمعة. وهذا يعني أنه يتم تجميع التعليمات البرمجية في ملف ثنائي ثم يتم تنفيذها. عندما نقوم بإجراء تغييرات على الكود في vscode:
هذا يعني أنه سيتم قطع اتصال vscode وستحتاج إلى إعادة ربط vscode للتعمق.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3