لربط VS Code بعملية قيد التشغيل بالفعل على جهاز Mac الخاص بك، استخدم مصحح الأخطاء الذي يدعم لغة تلك العملية: بالنسبة إلى Node.js، اختر Attach to Node Process من لوحة الأوامر؛ وبالنسبة إلى C#، اختر Debug: Attach to a .NET 5+ or .NET Core process؛ وبالنسبة إلى C/C++، أنشئ تكوين ربط باستخدام LLDB أو GDB. هذه المسارات مخصصة لبيئة التشغيل أو الإضافة المعنية. لا يوجد أمر واحد في VS Code يتيح الربط بجميع أنواع العمليات.
قبل الربط: حدد العملية ومصحح الأخطاء
حدد أولاً ما تقوم العملية بتشغيله: Node.js، أو .NET، أو C/C++ أصلية (native)، أو بيئة تشغيل أخرى. يوفر مصحح أخطاء Node المدمج في VS Code وإضافات اللغات المختلفة ميزات ربط متباينة؛ فظهور عملية ما في «مراقب النشاط» (Activity Monitor) على macOS لا يعني بالضرورة أن كل مصحح أخطاء قادر على الارتباط بها. تحتاج أيضاً إلى الإضافة المتوافقة مع اللغة. بالنسبة إلى C/C++ الأصلية على macOS، توثق Microsoft دعم LLDB أو GDB من خلال إضافة C/C++. VS Code: Debug C++
افتح المشروع أو ملفات المصدر المطابقة للبرنامج قيد التشغيل. يؤدي الربط إلى توصيل مصحح الأخطاء بعملية معينة؛ ولا يؤدي إلى بدء تشغيل التطبيق أو إعادة بنائه أو ضمان إمكانية ربط نقاط التوقف (breakpoints). يعد تطابق التعليمات البرمجية المصدرية ورموز تصحيح الأخطاء (debug symbols) المتاحة أمراً مهماً، خاصةً بالنسبة للبرامج الأصلية والتصريفات المحسّنة (optimized builds).
الربط بعملية Node.js قيد التشغيل
في VS Code، اضغط على ⇧⌘P لفتح لوحة الأوامر، وشغّل Debug: Attach to Node Process، ثم حدد العملية المطلوبة من قائمة الاختيار السريع (Quick Pick). تعرض قائمة الاختيار العمليات المرشحة وتُظهر معرّفات العمليات (process IDs) ومنافذ تصحيح الأخطاء الخاصة بها. توثق VS Code هذا المسار لعمليات Node التي لم تبدأ في وضع تصحيح الأخطاء بالإضافة إلى العمليات التي تستخدم خيار الفحص (inspect). VS Code: Node.js debugging
إذا لم تكن العملية مدرجة، أو كنت ترغب في تكوين قابل لإعادة الاستخدام، فافتح أو أنشئ ملف .vscode/launch.json وأضف تكوين ربط. بالنسبة لعملية قيد التشغيل بالفعل بدون وضع تصحيح الأخطاء، استخدم متغير أداة اختيار معرّف العملية:
{
"name": "Attach to Node process",
"type": "node",
"request": "attach",
"processId": "${command:PickProcess}"
}
حدد هذا التكوين في Run and Debug، ثم ابدأ تصحيح الأخطاء بالضغط على F5. بالنسبة لعملية Node تم تشغيلها بالفعل باستخدام --inspect، استخدم تكوين ربط مع منفذ تصحيح الأخطاء الخاص بها بدلاً من ذلك؛ المنفذ الافتراضي لـ Node هو 9229. لا تجمع بين processId وport: يحدد VS Code المنفذ تلقائياً عند الربط باستخدام معرّف العملية. تفاصيل تكوين تصحيح أخطاء Node.js
الربط بعملية .NET قيد التشغيل
ثبّت إضافة Microsoft C# وافتح لوحة الأوامر بالضغط على ⇧⌘P. شغّل Debug: Attach to a .NET 5+ or .NET Core process، ثم حدد العملية المستهدفة من القائمة. هذا هو المسار الموثق لربط العمليات لـ C# في VS Code؛ استخدمه بدلاً من افتراض إمكانية تطبيق أداة اختيار عمليات Node أو حقول التكوين الخاصة بها على .NET. VS Code: C# debugging
بعد الربط، عيّن نقطة توقف في الكود المصدري المطابق ودع التطبيق يصل إلى تلك الشيفرة. إذا بقيت نقطة التوقف غير مرتبطة، فتحقق من أن العملية تشغل البناء المطابق للمصدر الذي فتحته ومن توفر رموز تصحيح أخطاء قابلة للاستخدام. يمكن أن يؤثر إعداد المصدر الدقيق (exact-source) وخيارات الرموز في مصحح أخطاء C# على عملية تصحيح الأخطاء، ولا يمكن للربط أن يغير بأثر رجعي كيفية تصريف الوحدات المحملة بالفعل. إعدادات مصحح أخطاء C#
الربط بعملية C أو C++ أصلية
ثبّت إضافة Microsoft C/C++ واستخدم تكوين ربط في .vscode/launch.json. يحتاج التكوين إلى مسار الملف القابل للتنفيذ حتى يتمكن مصحح الأخطاء من تحميل الرموز، بالإضافة إلى طلب ربط (attach request)، ومعرّف عملية. يوثق مرجع تكوين C/C++ المتغير ${command:pickProcess} كأداة افتراضية لاختيار العمليات، ويوثق LLDB كمصحح أخطاء متاح على macOS. مرجع تكوين تشغيل C/C++
هيكل التكوين الأدنى على macOS هو:
{
"name": "Attach to native process",
"type": "cppdbg",
"request": "attach",
"program": "${workspaceFolder}/path/to/executable",
"processId": "${command:pickProcess}",
"MIMode": "lldb"
}
استبدل path/to/executable بالملف التنفيذي الفعلي المستخدم بواسطة العملية قيد التشغيل. اترك MIMode معيناً على lldb لهذا المثال الخاص بـ LLDB؛ حيث يتطلب GDB إعدادات منفصلة على macOS. يحتاج مصحح الأخطاء إلى موقع الملف التنفيذي لتحميل الرموز، لذا فإن استخدام مسار تخميني أو غير ذي صلة قد يجعل تصحيح الأخطاء على مستوى الكود المصدري غير قابل للاستخدام. مرجع تكوين C/C++
إذا فشل الربط أو لم يتم الوصول إلى نقاط التوقف
تأكد من تحديد العملية الصحيحة، وتثبيت الإضافة المعنية، وتوافق معمارية كل من العملية ومصحح الأخطاء. على معالجات Apple silicon، تم توثيق عدم تطابق المعمارية تحديداً كسبب محتمل لأخطاء الربط في C#. بالنسبة إلى C/C++، تأكد من مطابقة مسار الملف التنفيذي والرموز المتاحة للبناء قيد التشغيل. إذا كانت العملية تابعة لمستخدم آخر أو محمية بواسطة macOS، فقد تمنع أذونات نظام التشغيل عملية الربط أيضاً؛ استخدم عملية مصرحاً بها واتبع سياسة أمان macOS المعمول بها بدلاً من محاولة تجاوزها.
بالنسبة إلى Node.js، استخدم أداة اختيار العمليات الخاصة باللغة أو اضبط منفذ الفحص (inspect port)؛ وتكوين الربط العام الخاص بـ C/C++ لا يعد بديلاً. بالنسبة إلى C#، استخدم أمر ربط .NET. وبالنسبة إلى C/C++ الأصلية، استخدم cppdbg مع LLDB أو تثبيت GDB مهيأ بشكل منفصل. تساعد هذه الفروق في تحديد الخطوة التالية بدقة عندما لا تتناسب تعليمات "الربط" العامة مع الهدف المطلوب.
عند الانتهاء، استخدم Debug: Stop لقطع الاتصال. في وضع الربط الخاص بـ Node.js، يذكر VS Code أن الإيقاف يؤدي إلى فصل مصحح الأخطاء مع استمرار تشغيل العملية المستهدفة. تحقق من سلوك الإضافة الخاصة بك لبيئات التشغيل الأخرى إذا كان إبقاء العملية قيد التشغيل أمراً مهماً؛ فجلسات الربط وجلسات الإطلاق لا تمتلك بالضرورة سلوك الإيقاف نفسه. VS Code: Node.js debugging
المصادر
Node.js debugging in VS Code — Microsoft
Debugging — Microsoft
List of configurable options — Microsoft
Configure C/C++ debugging — Microsoft
Debug C++ in Visual Studio Code — Microsoft