अपने Mac पर पहले से चल रही किसी प्रक्रिया से VS Code को जोड़ने के लिए, उस डिबगर का उपयोग करें जो उस प्रक्रिया की भाषा का समर्थन करता है: Node.js के लिए, Command Palette से 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++, या कोई अन्य रनटाइम। VS Code का अंतर्निहित Node डिबगर और इसके लैंग्वेज एक्सटेंशन अलग-अलग अटैच सुविधाएं प्रदान करते हैं; macOS Activity Monitor में किसी प्रक्रिया के दिखाई देने का मतलब यह नहीं है कि प्रत्येक डिबगर उससे जुड़ सकता है। आपको उस भाषा के लिए अनुकूल एक्सटेंशन की भी आवश्यकता होगी। macOS पर नेटिव C/C++ के लिए, Microsoft ने C/C++ एक्सटेंशन के माध्यम से LLDB या GDB समर्थन का दस्तावेजीकरण किया है। VS Code: Debug C++

चल रहे प्रोग्राम से संबंधित प्रोजेक्ट या सोर्स फ़ाइलों को खोलें। अटैच करने से डिबगर प्रक्रिया से जुड़ जाता है; यह ऐप को शुरू नहीं करता, इसे रीबिल्ड नहीं करता, या यह गारंटी नहीं देता कि ब्रेकप्वाइंट बाइंड हो सकेंगे। सोर्स का मिलान और उपलब्ध डिबग सिंबल मायने रखते हैं, विशेष रूप से नेटिव प्रोग्राम और ऑप्टिमाइज़्ड बिल्ड के लिए।

चल रही Node.js प्रक्रिया से जोड़ें

VS Code में, Command Palette खोलने के लिए ⇧⌘P दबाएं, Debug: Attach to Node Process चलाएं, और Quick Pick से लक्षित प्रक्रिया का चयन करें। पिकर संभावित प्रक्रियाओं को सूचीबद्ध करता है और उनके प्रोसेस ID और डिबग पोर्ट दिखाता है। VS Code इस तरीके को उन Node प्रक्रियाओं के लिए दस्तावेजित करता है जो डिबग मोड में शुरू नहीं की गई थीं, साथ ही उन प्रक्रियाओं के लिए भी जो inspect विकल्प का उपयोग करती हैं। VS Code: Node.js debugging

यदि प्रक्रिया सूचीबद्ध नहीं है, या आप दोहराने योग्य कॉन्फ़िगरेशन चाहते हैं, तो .vscode/launch.json खोलें या बनाएं और एक अटैच कॉन्फ़िगरेशन जोड़ें। डिबग मोड के बिना पहले से चल रही प्रक्रिया के लिए, प्रोसेस ID पिकर वेरिएबल का उपयोग करें:

{
  "name": "Attach to Node process",
  "type": "node",
  "request": "attach",
  "processId": "${command:PickProcess}"
}

Run and Debug में इस कॉन्फ़िगरेशन का चयन करें, फिर F5 के साथ डिबगिंग शुरू करें। पहले से ही --inspect के साथ शुरू की गई Node प्रक्रिया के लिए, इसके बजाय इसके डिबग पोर्ट के साथ अटैच कॉन्फ़िगरेशन का उपयोग करें; Node का डिफ़ॉल्ट 9229 है। processId और port को एक साथ न जोड़ें: प्रोसेस ID द्वारा अटैच करते समय VS Code पोर्ट का निर्धारण स्वचालित रूप से करता है। Node.js debugging configuration details

चल रही .NET प्रक्रिया से जोड़ें

Microsoft C# एक्सटेंशन इंस्टॉल करें और ⇧⌘P के साथ Command Palette खोलें। Debug: Attach to a .NET 5+ or .NET Core process चलाएं, फिर सूची से लक्षित प्रक्रिया का चयन करें। VS Code में C# के लिए यह दस्तावेजित प्रोसेस-अटैच तरीका है; यह मानने के बजाय कि Node का प्रोसेस पिकर या कॉन्फ़िगरेशन फ़ील्ड .NET पर लागू होते हैं, इसका उपयोग करें। VS Code: C# debugging

जोड़ने के बाद, संबंधित सोर्स कोड में एक ब्रेकप्वाइंट सेट करें और एप्लिकेशन को उस कोड तक पहुंचने दें। यदि ब्रेकप्वाइंट अनबाउंड रहता है, तो जांचें कि प्रक्रिया आपके द्वारा खोले गए सोर्स से संबंधित बिल्ड चला रही है और उपयोगी सिंबल उपलब्ध हैं। C# डिबगर की एग्जैक्ट-सोर्स सेटिंग और सिंबल विकल्प डिबगिंग को प्रभावित कर सकते हैं, और अटैच करने से पहले से लोड किए गए मॉड्यूल कैसे कंपाइल किए गए थे, इसे पूर्वव्यापी रूप से बदला नहीं जा सकता है। C# debugger settings

नेटिव C या C++ प्रक्रिया से जोड़ें

Microsoft C/C++ एक्सटेंशन इंस्टॉल करें और .vscode/launch.json में अटैच कॉन्फ़िगरेशन का उपयोग करें। कॉन्फ़िगरेशन को निष्पादन योग्य फ़ाइल पाथ (एक्सीक्यूटेबल पाथ) की आवश्यकता होती है ताकि डिबगर सिंबल लोड कर सके, साथ ही एक अटैच रिक्वेस्ट और एक प्रोसेस ID की आवश्यकता होती है। C/C++ कॉन्फ़िगरेशन संदर्भ डिफ़ॉल्ट प्रोसेस पिकर के रूप में ${command:pickProcess} को और macOS पर उपलब्ध डिबगर के रूप में LLDB को दस्तावेजित करता है। C/C++ launch configuration reference

macOS के लिए एक न्यूनतम कॉन्फ़िगरेशन प्रारूप इस प्रकार है:

{
  "name": "Attach to native process",
  "type": "cppdbg",
  "request": "attach",
  "program": "${workspaceFolder}/path/to/executable",
  "processId": "${command:pickProcess}",
  "MIMode": "lldb"
}

path/to/executable को चल रही प्रक्रिया द्वारा उपयोग किए जाने वाले वास्तविक एक्सीक्यूटेबल पाथ से बदलें। इस LLDB उदाहरण के लिए MIMode को lldb पर सेट रखें; macOS पर GDB की अलग सेटअप आवश्यकताएं होती हैं। सिंबल लोड करने के लिए डिबगर को एक्सीक्यूटेबल के स्थान की आवश्यकता होती है, इसलिए अनुमानित या असंबंधित पाथ सोर्स-लेवल डिबगिंग को अनुपयोगी बना सकता है। C/C++ configuration reference

यदि अटैच विफल हो जाता है या ब्रेकप्वाइंट हिट नहीं होते हैं

जांचें कि आपने सही प्रक्रिया का चयन किया है, प्रासंगिक एक्सटेंशन इंस्टॉल है, और प्रक्रिया तथा डिबगर के आर्किटेक्चर संगत (कंपैटिबल) हैं। Apple silicon पर, आर्किटेक्चर बेमेल होने को C# अटैच त्रुटियों के संभावित कारण के रूप में विशेष रूप से दस्तावेजित किया गया है। C/C++ के लिए, पुष्टि करें कि एक्सीक्यूटेबल पाथ और उपलब्ध सिंबल चल रहे बिल्ड से मेल खाते हैं। यदि प्रक्रिया किसी अन्य उपयोगकर्ता की है या macOS द्वारा सुरक्षित है, तो ऑपरेटिंग-सिस्टम अनुमतियां भी अटैचमेंट को रोक सकती हैं; इसे बायपास करने का प्रयास करने के बजाय किसी अधिकृत प्रक्रिया का उपयोग करें और लागू macOS सुरक्षा नीति का पालन करें।

Node.js के लिए, भाषा-विशिष्ट प्रोसेस पिकर का उपयोग करें या inspect पोर्ट कॉन्फ़िगर करें; एक सामान्य C/C++ अटैच कॉन्फ़िगरेशन इसका विकल्प नहीं है। C# के लिए, .NET अटैच कमांड का उपयोग करें। नेटिव C/C++ के लिए, LLDB के साथ cppdbg या अलग से कॉन्फ़िगर किए गए GDB इंस्टॉलेशन का उपयोग करें। ये अंतर अगले चरण को स्पष्ट करने में मदद करते हैं जब कोई सामान्य "अटैच" निर्देश लक्ष्य के अनुकूल नहीं होता है।

समाप्त होने पर, डिस्कनेक्ट करने के लिए Debug: Stop का उपयोग करें। Node.js अटैच मोड में, VS Code का कहना है कि रोकने से डिबगर डिस्कनेक्ट हो जाता है और लक्ष्य प्रक्रिया चलती रहती है। यदि प्रक्रिया को चालू रखना महत्वपूर्ण है, तो अन्य रनटाइम के लिए अपने एक्सटेंशन के व्यवहार की पुष्टि करें; अटैच और लॉन्च सत्रों का स्टॉप व्यवहार आवश्यक रूप से समान नहीं होता है। VS Code: Node.js debugging

स्रोत