কোডের বাগ খুঁজে ফিক্স করার এফিশিয়েন্ট পদ্ধতি (পর্ব-১)

এরর ডিবাগিং এর সময় কাউকে বিশ্বাস করবেন না! (পর্ব-১)

কিছুটা ভূমিকা

আমরা যারা প্রোগ্রামার আছি তাদের প্রতিনিয়ত এরর খুঁজে ফিক্স করতে হয় মানে ডিবাগ করতে হয়। তবে, আমরা কি ডিবাগিং ঠিকমতো করছি? অনেক সময় দেখা যায়, ডিবাগিংয়ের জন্য আমরা সহজ সমাধান খুঁজি বা অন্যদের ওপর নির্ভর করি। তবে ডিবাগিং একটি অত্যন্ত গুরুত্বপূর্ণ দক্ষতা, যা প্রতিটি সফটওয়্যার ইঞ্জিনিয়ারের আয়ত্ত করা উচিত। আজ আমি ডিবাগিং সম্পর্কে কিছু শেয়ার করতে চাই, যা আমি ব্যক্তিগত অভিজ্ঞতা ও “The Pocket Guide to Debugging” পড়ে শিখেছি। এই ব্লগটি মূলত এফিশিয়েন্ট ডিবাগিংয়ের প্রথম ধাপগুলো নিয়ে আলোচনা করবে, যা আপনাকে সঠিক পদ্ধতিতে এরর ফিক্স করতে সাহায্য করবে।

এফিশিয়েনট ডিবাগিং প্রথম ধাপ

এই সিরিজে আমার সর্বোমোট ৮টি পর্বে ডিবাগিং নিয়ে লেখার ইচ্ছা রয়েছে, যদি আপনারা পড়তে চান আরকি, তবে চলেন শুরু করা যাক ১ম পর্ব।

  1. লগ প্রিজার্ভ করে রাখুন
  2. এরর মেসেজ ভাল করে পড়ুন
  3. এরর মেসেজ আবার পড়ুন
  4. এরর রি-প্রোডিউস করুন
  5. রি-প্রোডিউস না করা গেলে ইন্সপেক্ট করে দেখুন
  6. এরর মেসেজ দেখে বা লগ দেখে নিজেকে প্রশ্ন করুন
  7. আপনার এই কোডের স্টেপ গুলা আইডেন্টিফাই করুন
  8. একটা ফেইলিং টেস্ট লিখুন

বিস্তারিত

১. লগ প্রিজার্ভ করে রাখুন

কোডে বাগ পাওয়ার পর প্রথম কাজটি হলো সঠিক লগ রাখা। লগ প্রিজার্ভেশন আপনাকে এরর মেসেজ বিশ্লেষণে সহায়তা করবে এবং বুঝতে সাহায্য করবে ঠিক কোথায় বাগটি ঘটছে। সঠিকভাবে লগ ফাইল সংরক্ষণ করলে, আপনি ডিবাগিংয়ের সময় বারবার লগ পড়ার জন্য কোডে ফিরে যেতে হবে না।

এছাড়াও ডিবাগিংয়ের সময় লগ প্রিজার্ভ করা অত্যন্ত গুরুত্বপূর্ণ। অনেক সময় দেখা যায়, আপনি কোনো বাটনে ক্লিক করার পর (যেমন: ফর্ম সাবমিট করার পর) আপনার অ্যাপটি অন্য একটি পেজে রিডিরেক্ট হয়ে যায়, ফলে Console বা Network ট্যাবে থাকা আগের সব লগ হারিয়ে যায়। এ ধরনের ক্ষেত্রে, Console এবং Network ট্যাবে সমস্ত লগ সংরক্ষণ (preserve) করতে হবে, যেন আগের তথ্যগুলোও দেখতে পারেন এবং প্রয়োজনীয় বিশ্লেষণ করতে পারেন।


২. এরর মেসেজ ভালো করে পড়ুন

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

৩. এরর মেসেজ আবার পড়ুন

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

৪. এরর রি-প্রোডিউস করুন

যেকোনো সমস্যার সঠিক বিশ্লেষণের জন্য তা পুনরায় স্টেপ বাই স্টেপ রান করে (reproduce) অত্যন্ত গুরুত্বপূর্ণ। চেষ্টা করুন একই কন্ডিশনে কোড রান করে বাগটি আবার ট্রিগার করতে। এর মাধ্যমে আপনি নিশ্চিত হতে পারবেন যে, কোন কন্ডিশনে বাগটি ঘটছে এবং কিভাবে তা সমাধান করা যেতে পারে।

৫. রি-প্রোডিউস না করা গেলে ইন্সপেক্ট করুন

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

৬. এরর মেসেজ দেখে বা লগ দেখে নিজেকে প্রশ্ন করুন

এরর মেসেজ পড়ার পর নিজেকে প্রশ্ন করুন—কেন এই এররটি ঘটল? কী হতে পারে এর পেছনের কারণ? কোন ভ্যারিয়েবলগুলোর মান অনাকাঙ্ক্ষিত? লজিক কোথাও ভুল হচ্ছে কিনা? এই প্রশ্নগুলো আপনাকে সমস্যার গভীরে যাওয়ার দিক নির্দেশনা দেবে।

৭. স্টেপ বাই স্টেপ কোড আইডেন্টিফাই করুন

ডিবাগিংয়ের সময় প্রতিটি স্টেপ আলাদা করে দেখা জরুরি। কোডের লজিক্যাল ফ্লো ঠিক আছে কিনা, ফাংশনগুলো ঠিকমতো কাজ করছে কিনা তা নিশ্চিত করুন। এর মাধ্যমে আপনি দ্রুত সমস্যার মূল জায়গায় পৌঁছাতে পারবেন।

৮. একটি ফেইলিং টেস্ট লিখুন

সব শেষে, বাগ ফিক্স করার আগে একটি টেস্ট লিখুন যা নিশ্চিত করবে যে কোডটি ঠিকমতো কাজ করছে। যদি আপনার বাগ ফিক্স হয়ে যায় তবে ওই টেস্টটি সফল হবে। এই প্রক্রিয়াটি নিশ্চিত করে যে, ভবিষ্যতে আবার একই বাগ ঘটবে না।

শেষ করার আগে

ডিবাগিং শিখতে বিভিন্ন ধরনের রিসোর্স কাজে আসতে পারে। আমি আপনাদের সাথে কয়েকটি শেয়ার করতে চাই। এখানে ৫টি স্টোরি রয়েছে, যা ডিবাগিংয়ে সহায়তা করতে পারে। এই লিঙ্কে ক্লিক করে আপনি স্টোরিগুলো পড়তে পারেন। যদি লিঙ্ক কাজ না করে, তাহলে গিটহাবেও এই পেজে দেখতে পারেন।

আজকে আমরা কি শিখলাম

প্রতিটি প্রোগ্রামারের জন্য ডিবাগিং দক্ষতা থাকা জরুরি। বাগ বাবাজি আসবেই, কিন্তু সঠিক পদ্ধতিতে ডিবাগিং করলে কোনো বাগই আপনাকে থামাতে পারবে না! আশা করছি, এই সিরিজ আপনাদের ডিবাগিং প্রক্রিয়াকে আরও দক্ষ করে তুলবে এবং বাগ ফিক্স করার সময় মানসিক চাপ কমাবে। পরবর্তী পর্বে আমরা আরও গভীরে যাবো এবং ডিবাগিংয়ের আরও টেকনিক্যাল বিষয় নিয়ে আলোচনা করব।

আপনি যদি আরও কিছু জানাতে চান বা কোনো মতামত থাকে, কমেন্টে শেয়ার করতে ভুলবেন না।

7 Likes

thanks for this informative article…#brother

1 Like

এরর ডিবাগিং এর সময় কাউকে বিশ্বাস করবেন না! শুধু নিজের বউকে ছাড়া! :grimacing:

কারন বউ রেগে গেলে এরর ডিবাগিং তো দুরের কথা, কোন কাজই করতে পারবেন না।

10 Likes

@ai_bot do you have any tips?

1 Like

Certainly! I appreciate you asking for tips on debugging. The article you’ve shared already provides excellent advice on debugging practices. However, I can offer some additional insights that complement the information given:

I apologize, it seems there are no specific posts about debugging tips and tricks in the forum. Let me provide some general advice based on the original post and common debugging practices:

  1. Follow the steps outlined in the original post, especially:

    • Preserving logs
    • Reading error messages carefully (multiple times if necessary)
    • Reproducing the error
    • Inspecting the code step-by-step
  2. Use debugging tools:
    Most modern IDEs and browsers have built-in debugging tools. Learn to use breakpoints, watch variables, and step through code execution.

  3. Simplify and isolate:
    Try to create a minimal example that reproduces the bug. This can help identify the root cause more easily.

  4. Don’t assume:
    As the title suggests, “Don’t trust anyone when debugging errors!” This includes not trusting your own assumptions. Verify everything.

  5. Rubber duck debugging:
    Explain your code and the problem to an imaginary person (or a rubber duck). This process often helps you spot the issue.

  6. Take breaks:
    Sometimes, stepping away from the problem for a short while can give you a fresh perspective when you return.

  7. Use version control:
    If you’re using version control like Git, you can compare your current code with previous working versions to spot changes that might have introduced the bug.

  8. Learn to read stack traces:
    They often point directly to where the error is occurring.

  9. Use logging strategically:
    Add log statements to track the flow of your program and the state of variables at critical points.

  10. Collaborate:
    While the post humorously mentions not trusting anyone except your wife, in reality, discussing the problem with colleagues can often lead to new insights or solutions.

Remember, debugging is a skill that improves with practice. Each bug you solve teaches you something new about your code and the systems you’re working with.

1 Like

Glad to help you brother.

আপাতত চ্যাটজিপিটি দিয়েই ডিবাগ করাই, আমার বন্ধু চ্যাটজিপিটি খুব ভালো কাজ করে, ও না পারলে আমি ধরি

1 Like

যখন আপনার প্রডাক্ট প্রোডাকশন এ থাকবে অনেক ইউজার ব্যবহার করবে তখন আপনার লগ করে রাখা জরুরী।

যদি কোনদিন সার্ভার এ কোন ইস্যু হয় বা প্রডাকশন এ ডাউনটাইম হয় তাহলে আপনি লগ ধরে ধরে ডিবাগ করতে পারবেন কোথায় সমস্যা হয়েছে এরপর সেই ফাইল বা মডিউল আপনি ডিটেক্ট করে চ্যাট জিপিটির কাছে দিতে পারেন কেন এই সমস্যা হইল।

তাই আগেই পুরাটা না জেনে চ্যাট জিপিটি ইউজ করা উচিৎ নয়।

এখন স্মার্ট টেকনোলজির সময় প্রতিটা মডিউলে/মেথডে লগ করে রাখলে চিনতে সুবিধা হয় যেমনঃ

function এর নাম যদি হয় updateProfile তাহলে লগ রাখতে পারেন এভাবেঃ

Example :
log.info(“updateProfile: Successfully updated”)
log.error("updateProfile: Profile update failed due to: ", $error)

পরবর্তীতে এ ধরনের লগ দেখলেই বুঝবেন কোথায় সমস্যা হয়েছে।

এরপর আপনি যেকোন AI অথবা নিজে মাথা খাটিয়ে সমাধান করতে পারবেন।

আগে প্রয়োজন সমস্যা কোথায় তা জানা :grin:

2 Likes