
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 এই তিনটি জিনিস ঠিকঠাক ব্যবহার করতে পারলে যেকোনো লজিক ভুল অনেক দ্রুত ধরা পড়বে, আর ইন্টিজার ডিভিশনের মত ছোট অথচ ভয়ংকর ভুল গুলো আর চোখ ফাঁকি দিতে পারবে না।
আপনি এখন পর্যন্ত কোন বাগটি খুঁজে বের করতে সবচেয়ে বেশি সময় নষ্ট করেছেন, টিউমেন্টে জানান। ডিবাগার দিয়ে সেটি কীভাবে ধরা যেত তা নিয়ে আলোচনা করা যাবে।
আমি নাছিরুল হক। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 13 ঘন্টা 7 মিনিট যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 5 টি টিউন ও 0 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।