
Notepad আর Command Prompt দিয়ে দুই তিনটি লাইনের প্রোগ্রাম চালানো যায়, কিন্তু কোড যখন কয়েকশ লাইনে পৌঁছায় তখন এই পদ্ধতিতে কাজ করা প্রায় অসম্ভব হয়ে পড়ে। বানান ভুল ধরা পড়ে না, ক্লাস কোথায় আছে খুঁজে পাওয়া যায় না, আর একটি ছোট ভুলের জন্য পুরো কম্পাইল আটকে থাকে।
আরও বড় সমস্যা হয় বাগ খোঁজার সময়। বেশিরভাগ নতুন প্রোগ্রামার বাগ খুঁজতে জায়গায় জায়গায় প্রিন্ট স্টেটমেন্ট বসান, তারপর আউটপুট দেখে অনুমান করেন কোথায় ভুল হচ্ছে। কিন্তু একটি IDE এর ডিবাগার ব্যবহার করলে প্রোগ্রামটি লাইনে লাইনে থামিয়ে প্রতিটি ভ্যারিয়েবলের ভেতরের মান নিজের চোখে দেখা যায়। এই টিউনে IntelliJ IDEA Community Edition ইনস্টল করা, প্রথম প্রজেক্ট তৈরি করা, একটি বাগযুক্ত প্রোগ্রাম লিখে ব্রেকপয়েন্ট দিয়ে সেই বাগ ধরা এবং সেটি ঠিক করা পর্যন্ত পুরো প্রক্রিয়াটি ধাপে ধাপে দেখাব।
IntelliJ IDEA এর দুইটি সংস্করণ আছে, Ultimate সংস্করণটি টাকা দিয়ে কিনতে হয় আর Community Edition সম্পূর্ণ ফ্রি ও ওপেন সোর্স। সাধারণ Java শেখা ও ডেস্কটপ প্রোগ্রামিংয়ের জন্য Community Edition যথেষ্ট।
প্রথমবার চালু করলে ইউজার এগ্রিমেন্ট মেনে নিতে হয় এবং থিম বেছে নিতে বলা হয়। এখানে Dark বা Light যেটি চোখে আরাম লাগে সেটি বেছে নিন, পরে সেটিংস থেকে বদলানো যায়।
Welcome স্ক্রিনে New Project বাটনে ক্লিক করলে প্রজেক্ট তৈরির উইন্ডো আসবে। এখানে কয়েকটি ঘর সঠিক ভাবে পূরণ করা জরুরি।
প্রজেক্ট তৈরি হলে বাম পাশে যে ফোল্ডার গুলো দেখবেন সেগুলোর কাজ আলাদা।

উপরের ব্যাখ্যাচিত্রে পুরো উইন্ডোটিকে ভাগ করে দেখানো হয়েছে, কোন অংশে কী কাজ হয়। শুরুতে এতগুলো প্যানেল দেখে অনেকেই ঘাবড়ে যান, অথচ কাজ চালানোর জন্য মাত্র চারটি জায়গা চিনলেই যথেষ্ট। বাম পাশের তালিকা থেকে ফাইল খোলা হয়, মাঝের বড় অংশে কোড লেখা হয়, উপরে ডান দিকের দুটি বাটন দিয়ে প্রোগ্রাম চালানো ও থামানো হয়, আর নিচের অংশটি শুধু ডিবাগ করার সময় নিজে থেকেই খুলে আসে।
একটি ছোট কথা মনে রাখলে অনেক সময় বাঁচবে। ডান পাশের সরু বারটিতে যদি লাল দাগ দেখেন তার মানে ওই লাইনে ভুল আছে, আর কমলা দাগ মানে সতর্কবার্তা, কোডটি চলবে কিন্তু আরও ভালো করে লেখা যেত। দাগের উপরে মাউস নিলেই সমস্যাটি কী তা লেখা দেখতে পাবেন, ফলে ভুল খুঁজতে গিয়ে পুরো ফাইল পড়ার দরকার হয় না।
ডিবাগার শেখার সবচেয়ে ভালো উপায় হচ্ছে ইচ্ছে করে একটি ভুল রেখে দেওয়া। src ফোল্ডারে ডান বাটন ক্লিক করে New থেকে Java Class নির্বাচন করুন এবং নাম দিন MarkAverage. এরপর নিচের কোডটি লিখুন।
public class MarkAverage {
public static void main(String[] args) {
int[] marks = {72, 85, 66, 91, 58};
int total = 0;
for (int i = 0; i < marks.length; i++) {
total = total + marks[i];
}
int average = total / marks.length;
System.out.println("মোট নম্বর " + total);
System.out.println("গড় নম্বর " + average);
}
}
প্রোগ্রামটি চালাতে কীবোর্ডে Shift ও F10 চাপুন, অথবা উপরের সবুজ ত্রিভুজ বাটনে ক্লিক করুন। আউটপুটে মোট নম্বর ৩৭২ এবং গড় নম্বর ৭৪ দেখাবে। কিন্তু হাতে হিসাব করলে গড় হওয়া উচিত ৭৪ দশমিক ৪, অর্থাৎ দশমিকের পরের অংশটি হারিয়ে গেছে। এটিই আমাদের বাগ, এবার ডিবাগার দিয়ে ধরব।
ব্রেকপয়েন্ট মানে হচ্ছে প্রোগ্রামের নির্দিষ্ট একটি লাইনে গিয়ে প্রোগ্রামটি নিজে থেকেই থেমে যাবে, আর তখন সব ভ্যারিয়েবলের মান দেখা যাবে।

উপরের চিত্রটিতে ডিবাগ করার পুরো অভ্যাসটি ছয়টি ধাপে সাজানো হয়েছে। নতুনরা সাধারণত কোডের ভেতরে অনেক জায়গায় লেখা ছাপিয়ে সমস্যা খোঁজেন, তাতে সময় নষ্ট হয় আর পরে সেই লাইন গুলো মুছতেও ভুলে যান। ডিবাগার ব্যবহার করলে কোডে একটি অক্ষরও যোগ করতে হয় না, তবু প্রতিটি ভ্যারিয়েবলের ভেতরে ঠিক কোন মানটি আছে তা চোখের সামনে দেখা যায়।
ধাপ গুলোর মধ্যে চতুর্থটি সবচেয়ে জরুরি। এক লাইন এক লাইন করে এগোতে এগোতে যেই মুহূর্তে কোনো ভ্যারিয়েবলের মান আশার বাইরে চলে যায়, ঠিক সেই লাইনটিই আসল অপরাধী। এভাবে কাজ করলে সমস্যার জায়গাটি অনুমান করতে হয় না, বরং হাতে নাতে ধরা পড়ে যায়।
ডিবাগার থামা অবস্থায় Alt ও F8 চাপলে Evaluate Expression বক্স খোলে। সেখানে total ভাগ marks.length লিখে চালালে দেখবেন ফল আসছে ৭৪, অথচ ভাগফল হওয়া উচিত ৭৪ দশমিক ৪। এখানেই পরিষ্কার হয়ে যায় যে সমস্যা হিসাবের লজিকে নয়, বরং ডেটা টাইপে।
Java তে একটি int কে আরেকটি int দিয়ে ভাগ করলে ফলাফলও int হয়, তাই দশমিকের পরের অংশটুকু কেটে ফেলা হয়। এটিকে বলা হয় Integer Division. সমাধান হচ্ছে হিসাবের সময় অন্তত একটি সংখ্যাকে double এ রূপ দেওয়া।
double average = (double) total / marks.length;
System.out.printf("গড় নম্বর %.2f%n", average);
এবার প্রোগ্রামটি চালালে গড় নম্বর ৭৪ দশমিক ৪০ দেখাবে। মনে রাখবেন, কাস্ট করার সময় total এর আগে double বসাতে হয়, পুরো ভাগফলের আগে বসালে আগে int এ ভাগ হয়ে যাবে এবং সমস্যাটি থেকেই যাবে।
নিচের তালিকায় শুরুর দিকে সবচেয়ে বেশি যে সমস্যা গুলোতে মানুষ আটকায় সেগুলো এক জায়গায় রাখা হলো। পর্দায় যা দেখছেন সেটি বাম কলামে খুঁজে নিয়ে ডান কলামের কাজটি করলেই বেশির ভাগ ক্ষেত্রে সমাধান হয়ে যাবে।

তালিকাটি দেখে একটি বিষয় খেয়াল করবেন, বেশির ভাগ সমস্যার আসল কারণ কোডে নয়, বরং প্রজেক্টের সেটিংসে। তাই এররের লেখা পড়ে সাথে সাথে কোড বদলাতে বসার আগে একবার দেখে নিন সমস্যাটি আসলে সেটিংসের কোনো ব্যাপার কিনা। এই অভ্যাসটি পরে বড় প্রজেক্টে কাজ করার সময় অনেক কাজে দেবে।
প্রজেক্টে JDK সেট করা নেই। File মেনু থেকে Project Structure খুলে Project অংশে গিয়ে SDK ঘরে আপনার ইনস্টল করা JDK নির্বাচন করুন।
সাধারণত ফাইলটি src ফোল্ডারের বাইরে থাকলে বা প্রয়োজনীয় import না থাকলে এমন হয়। ক্লাস ফাইলটি src এর ভেতরে আছে কিনা দেখুন, এরপর লাল দাগে Alt ও Enter চেপে Import class প্রস্তাবটি নিন।
Shift ও F10 দিয়ে সাধারণ Run মোডে চালালে ব্রেকপয়েন্ট কাজ করে না। ডিবাগ মোডে অর্থাৎ Shift ও F9 দিয়ে চালাতে হয়। এছাড়া ব্রেকপয়েন্ট এমন লাইনে বসালে কাজ করে না যেখানে কোনো কোড নেই, যেমন ফাঁকা লাইন বা শুধু বন্ধনী আছে এমন লাইন।
Help মেনু থেকে Change Memory Settings এ গিয়ে হিপ মেমোরি ৭৫০ মেগাবাইট বা তার বেশি করে দিন, এবং একসাথে অনেক প্রজেক্ট খুলে না রাখুন।
ডিবাগার ব্যবহার শেখা মানে অনুমান করে বাগ খোঁজার অভ্যাস থেকে বেরিয়ে আসা। ব্রেকপয়েন্ট, Step Over আর Evaluate Expression এই তিনটি জিনিস ঠিকঠাক ব্যবহার করতে পারলে যেকোনো লজিক ভুল অনেক দ্রুত ধরা পড়বে, আর ইন্টিজার ডিভিশনের মত ছোট অথচ ভয়ংকর ভুল গুলো আর চোখ ফাঁকি দিতে পারবে না।
আপনি এখন পর্যন্ত কোন বাগটি খুঁজে বের করতে সবচেয়ে বেশি সময় নষ্ট করেছেন, টিউমেন্টে জানান। ডিবাগার দিয়ে সেটি কীভাবে ধরা যেত তা নিয়ে আলোচনা করা যাবে।
আমি নাছিরুল হক। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 1 সপ্তাহ 5 দিন যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 24 টি টিউন ও 3 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 2 টিউনারকে ফলো করি।
আমি নাছিরুল হক। প্রোগ্রামিং আর প্রযুক্তি নিয়ে ঘাঁটাঘাঁটি করতে ভালোবাসি। টেকটিউনসে মূলত Java প্রোগ্রামিং নিয়ে ধাপে ধাপে হাতে কলমে টিউটোরিয়াল লিখি — JDK ইনস্টল ও এনভায়রনমেন্ট সেটআপ থেকে শুরু করে IntelliJ IDEA, Exception Handling, OOP, Java Swing ও ফাইল হ্যান্ডলিং পর্যন্ত। এছাড়া স্মার্টফোন, ব্যাটারি ও নেটওয়ার্ক নিয়ে সহজ ভাষায় ব্যাখ্যামূলক...