আপনার 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 ব্যবহার করে একটি attach কনফিগারেশন তৈরি করুন। এই পদ্ধতিগুলো নির্দিষ্ট রানটাইম বা এক্সটেনশনের জন্য প্রযোজ্য। এমন কোনো একক VS Code কমান্ড নেই যা সব ধরণের প্রসেসের সাথে সংযুক্ত হতে পারে।

সংযুক্ত করার আগে: প্রসেস এবং ডিবাগার শনাক্ত করুন

প্রথমে শনাক্ত করুন প্রসেসটি কীসে চলছে: Node.js, .NET, নেটিভ C/C++, নাকি অন্য কোনো রানটাইম। VS Code-এর বিল্ট-ইন Node ডিবাগার এবং এর ল্যাঙ্গুয়েজ এক্সটেনশনগুলো ভিন্ন ভিন্ন attach ফিচার প্রদান করে; macOS Activity Monitor-এ কোনো প্রসেস দেখা যাওয়ার মানে এই নয় যে প্রতিটি ডিবাগারই এটির সাথে সংযুক্ত হতে পারবে। আপনার সংশ্লিষ্ট ভাষার জন্য উপযুক্ত এক্সটেনশনটিও প্রয়োজন হবে। macOS-এ নেটিভ C/C++-এর জন্য, Microsoft C/C++ এক্সটেনশনের মাধ্যমে LLDB বা GDB সমর্থনের বিষয়টি উল্লেখ করেছে। VS Code: Debug C++

চলমান প্রোগ্রামটির সাথে সম্পর্কিত প্রজেক্ট বা সোর্স ফাইলগুলো খুলুন। Attach করার মাধ্যমে ডিবাগার কেবল একটি প্রসেসের সাথে সংযুক্ত হয়; এটি অ্যাপ চালু করে না, পুনরায় বিল্ড করে না বা ব্রেকপয়েন্টগুলো সঠিকভাবে কাজ করবেই এমন কোনো নিশ্চয়তা দেয় না। সোর্সের সাথে মিল থাকা এবং প্রয়োজনীয় ডিবাগ সিম্বল উপস্থিত থাকা অত্যন্ত জরুরি, বিশেষ করে নেটিভ প্রোগ্রাম এবং অপ্টিমাইজড বিল্ডের ক্ষেত্রে।

চলমান Node.js প্রসেসের সাথে সংযুক্ত করুন

VS Code-এ, Command Palette খোলার জন্য ⇧⌘P চাপুন, Debug: Attach to Node Process রান করুন এবং Quick Pick থেকে কাঙ্ক্ষিত প্রসেসটি নির্বাচন করুন। এই পিকারটি সম্ভাব্য প্রসেসগুলোর তালিকা দেখায় এবং সেগুলোর প্রসেস আইডি (PID) ও ডিবাগ পোর্ট প্রদর্শন করে। ডিবাগ মোড ছাড়া শুরু হওয়া Node প্রসেসের পাশাপাশি inspect অপশন ব্যবহার করা প্রসেসের ক্ষেত্রেও VS Code এই পদ্ধতির কথা উল্লেখ করে। VS Code: Node.js debugging

যদি প্রসেসটি তালিকায় না থাকে, অথবা আপনি একটি পুনর্ব্যবহারযোগ্য কনফিগারেশন চান, তবে .vscode/launch.json ফাইলটি খুলুন বা তৈরি করুন এবং একটি attach কনফিগারেশন যোগ করুন। ডিবাগ মোড ছাড়াই ইতিমধ্যে চলমান কোনো প্রসেসের জন্য, প্রসেস আইডি পিকার ভেরিয়েবলটি ব্যবহার করুন:

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

Run and Debug-এ এই কনফিগারেশনটি নির্বাচন করুন, তারপর F5 চেপে ডিবাগিং শুরু করুন। ইতিমধ্যে --inspect দিয়ে শুরু করা কোনো Node প্রসেসের জন্য, প্রসেস আইডির বদলে এর ডিবাগ পোর্টসহ একটি attach কনফিগারেশন ব্যবহার করুন; Node-এর ডিফল্ট পোর্ট হলো 9229। processId এবং port একসাথে ব্যবহার করবেন না: প্রসেস আইডির মাধ্যমে সংযুক্ত হওয়ার সময় 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#-এর জন্য এটিই প্রসেস attach করার স্বীকৃত পদ্ধতি; Node-এর প্রসেস পিকার বা কনফিগারেশন ফিল্ড .NET-এর ক্ষেত্রেও কাজ করবে এমনটি ধরে না নিয়ে এই পদ্ধতিটিই ব্যবহার করুন। VS Code: C# debugging

সংযুক্ত করার পর, সংশ্লিষ্ট সোর্স কোডে একটি ব্রেকপয়েন্ট সেট করুন এবং অ্যাপ্লিকেশনটিকে সেই কোড পর্যন্ত পৌঁছাতে দিন। ব্রেকপয়েন্টটি যদি সক্রিয় (unbound) না হয়, তবে যাচাই করে নিন যে প্রসেসটিতে চলা বিল্ডটি আপনার খোলা সোর্সের সাথে হুবহু মিলছে কিনা এবং ব্যবহারযোগ্য সিম্বলগুলো উপলব্ধ রয়েছে কিনা। C# ডিবাগারের exact-source সেটিং এবং সিম্বল অপশনগুলো ডিবাগিংকে প্রভাবিত করতে পারে, আর attach করার মাধ্যমে ইতিমধ্যে লোড হওয়া মডিউলগুলো যেভাবে কম্পাইল করা হয়েছিল তা ভূতাপেক্ষভাবে পরিবর্তন করা সম্ভব নয়। C# debugger settings

নেটিভ C বা C++ প্রসেসের সাথে সংযুক্ত করুন

Microsoft C/C++ এক্সটেনশনটি ইনস্টল করুন এবং .vscode/launch.json-এ একটি attach কনফিগারেশন ব্যবহার করুন। ডিবাগার যাতে সিম্বল লোড করতে পারে সেজন্য এই কনফিগারেশনে এক্সিকিউটেবলের পাথ, একটি attach রিকোয়েস্ট এবং একটি প্রসেস আইডি থাকা প্রয়োজন। 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

Attach ব্যর্থ হলে বা ব্রেকপয়েন্ট কাজ না করলে

যাচাই করুন যে আপনি সঠিক প্রসেস নির্বাচন করেছেন, সংশ্লিষ্ট এক্সটেনশনটি ইনস্টল করা আছে এবং প্রসেস ও ডিবাগারের আর্কিটেকচার সামঞ্জস্যপূর্ণ। Apple silicon-এ, আর্কিটেকচারের অমিলকে C# attach সংক্রান্ত ত্রুটির একটি সম্ভাব্য কারণ হিসেবে স্পষ্টভাবে উল্লেখ করা হয়েছে। C/C++-এর ক্ষেত্রে নিশ্চিত করুন যে এক্সিকিউটেবল পাথ এবং উপলব্ধ সিম্বলগুলো চলমান বিল্ডের সাথে মিলছে। প্রসেসটি যদি অন্য কোনো ব্যবহারকারীর মালিকানাধীন হয় বা macOS দ্বারা সুরক্ষিত থাকে, তবে অপারেটিং সিস্টেমের অনুমতিজনিত কারণেও সংযোগ ব্যর্থ হতে পারে; কোনো অনুমোদিত প্রসেস ব্যবহার করুন এবং macOS-এর নিরাপত্তা নীতি বাইপাস করার চেষ্টা না করে তা মেনে চলুন।

Node.js-এর জন্য ভাষার নির্দিষ্ট প্রসেস পিকার ব্যবহার করুন বা inspect পোর্ট কনফিগার করুন; একটি সাধারণ C/C++ attach কনফিগারেশন কিন্তু এর বিকল্প নয়। C#-এর জন্য .NET attach কমান্ড ব্যবহার করুন। নেটিভ C/C++-এর জন্য LLDB সহ cppdbg অথবা আলাদাভাবে কনফিগার করা GDB ইনস্টলেশন ব্যবহার করুন। কোনো সাধারণ "attach" নির্দেশাবলী যখন কাজ করে না, তখন এই পার্থক্যগুলো পরবর্তী পদক্ষেপ নির্ধারণে সাহায্য করে।

কাজ শেষ হলে, সংযোগ বিচ্ছিন্ন করতে Debug: Stop ব্যবহার করুন। Node.js attach মোডে, VS Code উল্লেখ করে যে stop করলে কেবল ডিবাগারের সংযোগ বিচ্ছিন্ন হয় এবং টার্গেট অ্যাপ্লিকেশনটি চলতে থাকে। প্রসেসটি চালু রাখা যদি গুরুত্বপূর্ণ হয়, তবে অন্যান্য রানটাইমের ক্ষেত্রে আপনার এক্সটেনশনের আচরণ কেমন তা নিশ্চিত হয়ে নিন; কারণ attach এবং launch সেশনের স্টপ সংক্রান্ত আচরণ সবসময় এক নাও হতে পারে। VS Code: Node.js debugging

সোর্সসমূহ