আপনার Mac-এ VS Code-এর কোনো ব্রেকপয়েন্ট যদি ফাঁপা ধূসর বৃত্তে পরিণত হয়, তবে ডিবাগার সেটিকে রেজিস্টার করতে পারেনি। প্রথমে লাইনটি কার্যকর হতে পারে কি না এবং সক্রিয় ডিবাগার সেই ফাইলটিকে সমর্থন করে কি না তা পরীক্ষা করে শুরু করুন। তারপর নিশ্চিত করুন যে ডিবাগ সেশনটি আপনার এডিট করা কোডটিই চালাচ্ছে। এই নির্দেশকটি একা নির্দিষ্ট কারণটি চিহ্নিত করতে পারে না; এই পর্যায়ক্রমটি কোনো ঢালাও সমাধান অনুমান না করেই কারণটি চিহ্নিত করতে সাহায্য করে। VS Code-এর ডিবাগিং নির্দেশিকা-তে ফাঁপা বৃত্ত এবং এর সাধারণ কারণগুলো বর্ণনা করা হয়েছে।

আপনি কোন ব্রেকপয়েন্ট অবস্থাটি দেখছেন তা নিশ্চিত করুন

একটি ভরাট লাল বৃত্ত হলো সক্রিয় (enabled) ব্রেকপয়েন্ট; একটি ভরাট ধূসর বৃত্ত হলো নিষ্ক্রিয় (disabled)। একটি ফাঁপা ধূসর বৃত্তের অর্থ হলো ডিবাগার ব্রেকপয়েন্টটি রেজিস্টার করতে পারেনি। VS Code-এর ডকুমেন্টেশনে দুটি সাধারণ কারণ উল্লেখ করা হয়েছে: লাইনে কোনো এক্সিকিউটেবল কোড নেই, অথবা ডিবাগার সেই সোর্স ফাইলটিকে সমর্থন করে না। যে ব্রেকপয়েন্টগুলো রেজিস্টার করা যায় না, সেগুলো সেশন শুরু হওয়ার সময়ও ফাঁপা হিসেবে প্রদর্শিত হতে পারে; লাইভ-এডিট সমর্থন ছাড়া সেশন চলাকালীন সোর্স এডিট করলেও একই নির্দেশক দেখা যেতে পারে। ভাষা এবং ডিবাগার এক্সটেনশনের ওপর ভিত্তি করে সুনির্দিষ্ট আচরণ ভিন্ন হতে পারে।

macOS-এ, Shift–Command–D চেপে Run and Debug খুলুন। এর BREAKPOINTS বিভাগে প্রাসঙ্গিক এন্ট্রিটি খুঁজুন এবং এটি সক্রিয় রয়েছে কি না তা নিশ্চিত করুন। এই ভিউটি আপনাকে ব্রেকপয়েন্ট পরিচালনা করতে দেয়, তবে ডিবাগার কেন এটি প্রত্যাখ্যান করেছে তা নিজে থেকে ব্যাখ্যা করে না। চিহ্নিত লাইনে এডিটরটি খোলা রাখুন যাতে আপনার সেশন যে ফাইলটি ব্যবহার করছে তার সাথে সোর্স লোকেশনের তুলনা করতে পারেন। VS Code: Debug code

লাইনটি কার্যকর (execute) হতে পারে কি না তা পরীক্ষা করুন

ব্রেকপয়েন্টটি ফাঁকা লাইন, মন্তব্য (comment) বা ব্র্যাকেটের (brace) পরিবর্তে এমন একটি লাইনে সরিয়ে নিন যা কোনো অ্যাকশন সম্পাদন করে, যেমন ফাংশনের ভেতরের কোনো স্টেটমেন্ট। ব্রেকপয়েন্ট কেবল সেখানেই কার্যকর যেখানে ডিবাগার এক্সিকিউশন থামাতে পারে। সেশন শুরু করার পর যদি প্রতিস্থাপিত মার্কারটি একটি ভরাট লাল বৃত্তে পরিণত হয়, তবে মূল লাইনে সম্ভবত কোনো এক্সিকিউটেবল কোড ছিল না। এটি ডকুমেন্টেশনে থাকা আচরণ থেকে প্রাপ্ত একটি ডায়াগনস্টিক অনুমান, কোনো নিশ্চয়তা নয়: সমর্থন এবং ব্রেকপয়েন্ট বাইন্ডিং ডিবাগার ও ভাষার ওপর নির্ভর করে।

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

সক্রিয় ডিবাগার এবং সেশন পরীক্ষা করুন

VS Code-এ JavaScript, TypeScript, এবং Node.js-এর জন্য ডিবাগিং সমর্থন অন্তর্ভুক্ত রয়েছে। অন্যান্য ভাষা এবং রানটাইমের জন্য সাধারণত একটি উপযুক্ত ডিবাগার এক্সটেনশনের প্রয়োজন হয়। প্রাসঙ্গিক এক্সটেনশনটি ইনস্টল ও সক্রিয় রয়েছে কি না তা নিশ্চিত করুন, তারপর সংশ্লিষ্ট ভাষা বা রানটাইমের জন্য একটি সেশন শুরু করুন। VS Code যদি আপনাকে ডিবাগার নির্বাচন করতে অনুরোধ করে, তবে আপনি যে প্রোগ্রামটি চালাতে চান তার সাথে মেলে এমন একটি বেছে নিন। একটি এক্সটেনশনের ডকুমেন্টেশন তার সমর্থিত সোর্স ফাইল, ব্রেকপয়েন্টের আচরণ এবং লঞ্চ অপশনগুলো সংজ্ঞায়িত করে। VS Code: Debug code

ডিবাগিং শুরু করতে F5 চাপুন, অথবা কোনো কনফিগারেশন নির্বাচন করতে Run and Debug ব্যবহার করুন। একটি সাধারণ প্রোগ্রাম সক্রিয় ফাইল থেকেই চলতে পারে, তবে নির্দিষ্ট এন্ট্রি পয়েন্ট, আর্গুমেন্ট, এনভায়রনমেন্ট ভেরিয়েবল বা অ্যাটাচ টার্গেটযুক্ত অ্যাপ্লিকেশনের জন্য একটি launch.json কনফিগারেশনের প্রয়োজন হতে পারে। অ্যাটাচ সেটআপের ক্ষেত্রে, নিশ্চিত করুন যে টার্গেট প্রসেসটি আগেই ডিবাগ মোডে চলছে এবং সংযোগের বিবরণগুলো মিলছে। প্রোগ্রামের লোড করা সোর্স থেকে ভিন্ন ফাইলে সঠিকভাবে স্থাপিত ব্রেকপয়েন্টও unverified থেকে যেতে পারে। VS Code: Configure debugging

সংক্ষিপ্ত ধারাবাহিক ধাপের মাধ্যমে কারণটি নির্দিষ্ট করুন

এই ক্রমটি ব্যবহার করুন, প্রতিবারে একটি করে পরিবর্তন করুন যাতে ফলাফলটি তথ্যবহুল হয়:

  1. BREAKPOINTS-এ, ব্রেকপয়েন্টটি সক্রিয় রয়েছে কি না তা যাচাই করুন এবং এর ফাইল ও লাইন নোট করুন।
  2. এটিকে সেই ফাইলের একটি এক্সিকিউটেবল স্টেটমেন্টে সরিয়ে নিন।
  3. F5 দিয়ে কাঙ্ক্ষিত ডিবাগ কনফিগারেশনটি শুরু করুন এবং মার্কারটি রেজিস্টার হয় কি না তা দেখুন।
  4. এটি যদি ফাঁপা থেকে যায়, তবে যাচাই করুন যে নির্বাচিত ডিবাগারটি ফাইলটিকে সমর্থন করে এবং এর এক্সটেনশনটি ইনস্টল ও সক্রিয় রয়েছে।
  5. কনফিগারেশনটি আপনার দেখা সোর্স থেকে তৈরি প্রোগ্রামে লঞ্চ বা অ্যাটাচ করছে কি না তা পরীক্ষা করুন। এর এন্ট্রি পয়েন্ট, ওয়ার্কিং ডিরেক্টরি এবং আপনার প্রকল্পের সাথে প্রাসঙ্গিক যেকোনো বিল্ড বা প্রি-লঞ্চ টাস্ক পর্যালোচনা করুন।
  6. অ্যাপ্লিকেশনটি যদি সোর্স রূপান্তর করে, তবে এডিটর ফাইলগুলোকে রানটাইম কোডের সাথে ম্যাপ করার জন্য ল্যাঙ্গুয়েজ ডিবাগারের নির্দেশাবলী দেখুন।

একটি সফল পরীক্ষা কোনো প্রকল্পের প্রতিটি ব্রেকপয়েন্ট বৈধ বলে প্রমাণ করে না; নির্দিষ্ট সোর্স লোকেশনে পুনরায় পরীক্ষাটি করুন। ডিবাগার যদি কোনো কনফিগারেশন বা রেজিস্ট্রেশন ত্রুটি রিপোর্ট করে, তবে পরবর্তী পরিবর্তন নির্ধারণ করতে সেই বার্তা এবং এক্সটেনশনের ডকুমেন্টেশন ব্যবহার করুন। ভিন্ন ডিবাগারের সেটিংস কপি করা এড়িয়ে চলুন: VS Code উল্লেখ করে যে কনফিগারেশন প্রোপার্টি এবং সক্ষমতা নির্বাচিত ডিবাগার ও রিকোয়েস্ট টাইপের ওপর নির্ভর করে। VS Code: Configure debugging

নির্দেশকটি আপনাকে কী জানাতে পারে এবং কী পারে না

ফাঁপা বৃত্তটি আপনাকে জানায় যে ডিবাগার সেই ব্রেকপয়েন্টটি রেজিস্টার করেনি। এটি নিজে থেকে নন-এক্সিকিউটেবল লাইন, অসমর্থিত সোর্স, এডিটর ও রানটাইম কোডের অমিল, বা অন্যান্য ডিবাগার-নির্দিষ্ট সীমাবদ্ধতার মধ্যে পার্থক্য করতে পারে না। সবচেয়ে কার্যকর পরবর্তী পদক্ষেপ হলো কাঙ্ক্ষিত সেশনে একটি স্পষ্টতই এক্সিকিউটেবল লাইন পরীক্ষা করা, তারপর রেজিস্ট্রেশন ব্যর্থ হতে থাকলে ডিবাগার এবং সোর্স ম্যাপিং যাচাই করা। Mac-এ মূল নিয়ন্ত্রণগুলো একই: VS Code এডিটর গাটার, Run and Debug ভিউ, F5, এবং Shift–Command–D; ডিবাগার-নির্দিষ্ট সমাধান অবশ্যই এক্সটেনশন বা রানটাইম ডকুমেন্টেশন থেকে আসতে হবে।

উৎস