এরর ডিবাগিং এর সময় কাউকে বিশ্বাস করবেন না! (পর্ব-১)
কিছুটা ভূমিকা
আমরা যারা প্রোগ্রামার আছি তাদের প্রতিনিয়ত এরর খুঁজে ফিক্স করতে হয় মানে ডিবাগ করতে হয়। তবে, আমরা কি ডিবাগিং ঠিকমতো করছি? অনেক সময় দেখা যায়, ডিবাগিংয়ের জন্য আমরা সহজ সমাধান খুঁজি বা অন্যদের ওপর নির্ভর করি। তবে ডিবাগিং একটি অত্যন্ত গুরুত্বপূর্ণ দক্ষতা, যা প্রতিটি সফটওয়্যার ইঞ্জিনিয়ারের আয়ত্ত করা উচিত। আজ আমি ডিবাগিং সম্পর্কে কিছু শেয়ার করতে চাই, যা আমি ব্যক্তিগত অভিজ্ঞতা ও “The Pocket Guide to Debugging” পড়ে শিখেছি। এই ব্লগটি মূলত এফিশিয়েন্ট ডিবাগিংয়ের প্রথম ধাপগুলো নিয়ে আলোচনা করবে, যা আপনাকে সঠিক পদ্ধতিতে এরর ফিক্স করতে সাহায্য করবে।
এফিশিয়েনট ডিবাগিং প্রথম ধাপ
এই সিরিজে আমার সর্বোমোট ৮টি পর্বে ডিবাগিং নিয়ে লেখার ইচ্ছা রয়েছে, যদি আপনারা পড়তে চান আরকি, তবে চলেন শুরু করা যাক ১ম পর্ব।
- লগ প্রিজার্ভ করে রাখুন
- এরর মেসেজ ভাল করে পড়ুন
- এরর মেসেজ আবার পড়ুন
- এরর রি-প্রোডিউস করুন
- রি-প্রোডিউস না করা গেলে ইন্সপেক্ট করে দেখুন
- এরর মেসেজ দেখে বা লগ দেখে নিজেকে প্রশ্ন করুন
- আপনার এই কোডের স্টেপ গুলা আইডেন্টিফাই করুন
- একটা ফেইলিং টেস্ট লিখুন
বিস্তারিত
১. লগ প্রিজার্ভ করে রাখুন
কোডে বাগ পাওয়ার পর প্রথম কাজটি হলো সঠিক লগ রাখা। লগ প্রিজার্ভেশন আপনাকে এরর মেসেজ বিশ্লেষণে সহায়তা করবে এবং বুঝতে সাহায্য করবে ঠিক কোথায় বাগটি ঘটছে। সঠিকভাবে লগ ফাইল সংরক্ষণ করলে, আপনি ডিবাগিংয়ের সময় বারবার লগ পড়ার জন্য কোডে ফিরে যেতে হবে না।
এছাড়াও ডিবাগিংয়ের সময় লগ প্রিজার্ভ করা অত্যন্ত গুরুত্বপূর্ণ। অনেক সময় দেখা যায়, আপনি কোনো বাটনে ক্লিক করার পর (যেমন: ফর্ম সাবমিট করার পর) আপনার অ্যাপটি অন্য একটি পেজে রিডিরেক্ট হয়ে যায়, ফলে Console বা Network ট্যাবে থাকা আগের সব লগ হারিয়ে যায়। এ ধরনের ক্ষেত্রে, Console এবং Network ট্যাবে সমস্ত লগ সংরক্ষণ (preserve) করতে হবে, যেন আগের তথ্যগুলোও দেখতে পারেন এবং প্রয়োজনীয় বিশ্লেষণ করতে পারেন।
২. এরর মেসেজ ভালো করে পড়ুন
একতা গবেষণায় দেখা গেছে আমরা আসলে এরর মেসেজ নিয়ে অনেকে দ্রুত সমাধান খোঁজার চেষ্টা করি। তবে এরর মেসেজ ভালোভাবে না পড়লে বা বুঝে না নিলে আসল সমস্যাটি ধরতে পারবেন না। প্রথমে এরর মেসেজ বিশ্লেষণ করুন, কোন লাইনে সমস্যা হয়েছে এবং কোন ফাংশনে বাগ আছে তা নিশ্চিত করুন।
৩. এরর মেসেজ আবার পড়ুন
প্রথমবারে হয়তো আপনি কিছু বিষয় এড়িয়ে যেতে পারেন। আবার পড়ে দেখুন এবং একটু গভীরে গিয়ে ভেবে দেখুন, এরর মেসেজ আপনাকে কী বলতে চাইছে। যদি কিছু অস্পষ্ট মনে হয়, সেটি নিয়ে গুগলে সার্চ করুন বা ডকুমেন্টেশন দেখে নিশ্চিত হোন।
৪. এরর রি-প্রোডিউস করুন
যেকোনো সমস্যার সঠিক বিশ্লেষণের জন্য তা পুনরায় স্টেপ বাই স্টেপ রান করে (reproduce) অত্যন্ত গুরুত্বপূর্ণ। চেষ্টা করুন একই কন্ডিশনে কোড রান করে বাগটি আবার ট্রিগার করতে। এর মাধ্যমে আপনি নিশ্চিত হতে পারবেন যে, কোন কন্ডিশনে বাগটি ঘটছে এবং কিভাবে তা সমাধান করা যেতে পারে।
৫. রি-প্রোডিউস না করা গেলে ইন্সপেক্ট করুন
যদি বাগটি রি-প্রোডিউস না হয়, তাহলে কোডের স্টেপ বাই স্টেপ ইনস্পেকশন করা শুরু করুন। প্রতিটি স্টেপ ভালোভাবে বিশ্লেষণ করুন, আমি বলব কোড পড়ুন, কোথায় লজিকাল মিসটেক হতে পারে তা খুঁজে বের করুন। ডিবাগিং টুলস ব্যবহার করে কোড ব্রেকপয়েন্ট দিয়ে ইনস্পেক্ট করা এ ক্ষেত্রে সহায়ক হতে পারে।
৬. এরর মেসেজ দেখে বা লগ দেখে নিজেকে প্রশ্ন করুন
এরর মেসেজ পড়ার পর নিজেকে প্রশ্ন করুন—কেন এই এররটি ঘটল? কী হতে পারে এর পেছনের কারণ? কোন ভ্যারিয়েবলগুলোর মান অনাকাঙ্ক্ষিত? লজিক কোথাও ভুল হচ্ছে কিনা? এই প্রশ্নগুলো আপনাকে সমস্যার গভীরে যাওয়ার দিক নির্দেশনা দেবে।
৭. স্টেপ বাই স্টেপ কোড আইডেন্টিফাই করুন
ডিবাগিংয়ের সময় প্রতিটি স্টেপ আলাদা করে দেখা জরুরি। কোডের লজিক্যাল ফ্লো ঠিক আছে কিনা, ফাংশনগুলো ঠিকমতো কাজ করছে কিনা তা নিশ্চিত করুন। এর মাধ্যমে আপনি দ্রুত সমস্যার মূল জায়গায় পৌঁছাতে পারবেন।
৮. একটি ফেইলিং টেস্ট লিখুন
সব শেষে, বাগ ফিক্স করার আগে একটি টেস্ট লিখুন যা নিশ্চিত করবে যে কোডটি ঠিকমতো কাজ করছে। যদি আপনার বাগ ফিক্স হয়ে যায় তবে ওই টেস্টটি সফল হবে। এই প্রক্রিয়াটি নিশ্চিত করে যে, ভবিষ্যতে আবার একই বাগ ঘটবে না।
শেষ করার আগে
ডিবাগিং শিখতে বিভিন্ন ধরনের রিসোর্স কাজে আসতে পারে। আমি আপনাদের সাথে কয়েকটি শেয়ার করতে চাই। এখানে ৫টি স্টোরি রয়েছে, যা ডিবাগিংয়ে সহায়তা করতে পারে। এই লিঙ্কে ক্লিক করে আপনি স্টোরিগুলো পড়তে পারেন। যদি লিঙ্ক কাজ না করে, তাহলে গিটহাবেও এই পেজে দেখতে পারেন।
আজকে আমরা কি শিখলাম
প্রতিটি প্রোগ্রামারের জন্য ডিবাগিং দক্ষতা থাকা জরুরি। বাগ বাবাজি আসবেই, কিন্তু সঠিক পদ্ধতিতে ডিবাগিং করলে কোনো বাগই আপনাকে থামাতে পারবে না! আশা করছি, এই সিরিজ আপনাদের ডিবাগিং প্রক্রিয়াকে আরও দক্ষ করে তুলবে এবং বাগ ফিক্স করার সময় মানসিক চাপ কমাবে। পরবর্তী পর্বে আমরা আরও গভীরে যাবো এবং ডিবাগিংয়ের আরও টেকনিক্যাল বিষয় নিয়ে আলোচনা করব।
আপনি যদি আরও কিছু জানাতে চান বা কোনো মতামত থাকে, কমেন্টে শেয়ার করতে ভুলবেন না।