Debugging (ডিবাগিং) হল এমন একটি প্রক্রিয়া যা সফটওয়্যার ডেভেলপমেন্টের সময় ত্রুটি (bugs) বা ভুল শনাক্ত এবং সেগুলোর সমাধান করতে ব্যবহৃত হয়। রুবি ভাষায়, ডিবাগিং করার জন্য বিভিন্ন কৌশল ও সরঞ্জাম ব্যবহার করা যায়, এবং Pry হল রুবির অন্যতম জনপ্রিয় ডিবাগিং টুল।
এখানে আমরা Debugging Techniques এবং Pry ব্যবহার নিয়ে আলোচনা করব।
১. Debugging Techniques in Ruby
রুবিতে ডিবাগিং করার জন্য বেশ কিছু জনপ্রিয় কৌশল রয়েছে, যেমন puts, p, byebug, এবং **pry**। এদের সাহায্যে আপনি কোডের মধ্যে সমস্যা চিহ্নিত করতে পারেন এবং ডিবাগিং প্রক্রিয়া আরও সহজভাবে সম্পন্ন করতে পারেন।
১.১ Using puts for Debugging
একটি সহজ ডিবাগging কৌশল হল puts ব্যবহার করা, যা কোডের মধ্যে চলতে থাকা মান বা ভেরিয়েবলগুলি প্রিন্ট করে।
def add_numbers(a, b)
puts "a: #{a}, b: #{b}" # Debugging line
a + b
end
puts add_numbers(5, 3)এখানে, puts ব্যবহার করে আমরা a এবং b ভেরিয়েবলের মান প্রিন্ট করেছি, যাতে কোডের প্রবাহ এবং ভেরিয়েবলের মান দেখতে পাই।
১.২ Using p for Debugging
p মেথডটি puts এর মতো, তবে এটি আউটপুটকে আরো বিস্তারিতভাবে দেখায়। এটি ভেরিয়েবলের মধ্যে থাকা তথ্যকে একটু বেশি সুনির্দিষ্টভাবে (যেমন, অ্যারে, হ্যাশ) প্রিন্ট করে।
def add_numbers(a, b)
p a, b # Debugging with `p`
a + b
end
puts add_numbers(5, 3)আউটপুট:
5
3
8এখানে, p ব্যবহার করা হয়েছে যা ভেরিয়েবলের মানকে বিস্তারিতভাবে প্রিন্ট করছে।
১.৩ Using byebug for Debugging
byebug হল একটি জনপ্রিয় ডিবাগিং জেম, যা আপনাকে ব্রেকপয়েন্ট সেট করতে এবং কোড লাইনে স্টপ করতে সাহায্য করে। এটি step-by-step debugging এর জন্য ব্যবহার করা হয়।
Installation:
gem install byebugউদাহরণ:
def add_numbers(a, b)
byebug # Set breakpoint here
a + b
end
puts add_numbers(5, 3)এখানে, byebug মেথডটি কোডের এই লাইনে execution থামিয়ে দেয় এবং ডিবাগিং এর জন্য একটি interactive shell প্রদান করে। আপনি এই shell এ পরবর্তী লাইনে গিয়ে চলমান কোড এবং ভেরিয়েবলের মান পরীক্ষা করতে পারবেন।
২. Using Pry for Debugging
Pry হল রুবির একটি অত্যন্ত শক্তিশালী ডিবাগিং এবং ইন্টারঅ্যাকটিভ শেল। এটি pry gem ব্যবহার করে আপনি কোডের যে কোনো জায়গায় ডিবাগিং শেল চালু করতে পারেন এবং চলমান কোডের সাথে ইন্টারঅ্যাক্ট করতে পারেন।
Pry Installation:
gem install pry২.১ Basic Usage of Pry
require 'pry'
def add_numbers(a, b)
binding.pry # Start Pry session here
a + b
end
puts add_numbers(5, 3)এখানে, binding.pry ব্যবহার করে আপনি কোডের এই লাইনে একটি Pry শেল শুরু করেছেন। কোড যখন এখানে পৌঁছাবে, তখন এটি থামবে এবং আপনি ইন্টারঅ্যাকটিভভাবে ভেরিয়েবল এবং কোডের অবস্থা পরীক্ষা করতে পারবেন।
আউটপুট:
[1] pry(main)> a
=> 5
[2] pry(main)> b
=> 3
[3] pry(main)> a + b
=> 8এখানে, Pry শেলে আপনি a, b, এবং a + b দেখতে পাচ্ছেন, এবং প্রয়োজনীয় পরিবর্তন করতে পারেন। যখন আপনি কাজ শেষ করবেন, exit কমান্ড দিয়ে শেল থেকে বের হতে পারবেন।
২.২ Navigating Code in Pry
Pry শেলে আপনি কোডের মধ্যে চলমান অবস্থায়ই ফাংশন বা মেথডের মধ্যে ঢুকতে, প্যারামিটার চেক করতে এবং স্টেপ-বাই-স্টেপ এক্সিকিউট করতে পারেন।
step: পরবর্তী লাইনে গিয়ে কোড এক্সিকিউট করুন।next: ফাংশনের মধ্যে না ঢুকে পরবর্তী লাইনে চলে যান।continue: কোড চালিয়ে যেতে থাকুন।
উদাহরণ:
def multiply(a, b)
binding.pry
a * b
end
puts multiply(4, 2)Pry শেলে যখন আপনি a বা b পরীক্ষা করবেন, আপনি দেখতে পাবেন তাদের মান। এরপর, next কমান্ড ব্যবহার করে আপনি পরবর্তী লাইনে চলে যেতে পারেন।
২.৩ Using Pry for Conditional Breakpoints
Pry দিয়ে আপনি কন্ডিশনাল ব্রেকপয়েন্টও সেট করতে পারেন, যেখানে শুধুমাত্র একটি নির্দিষ্ট শর্ত পূর্ণ হলে Pry শেল সক্রিয় হবে।
def add_numbers(a, b)
binding.pry if a > 10 # Only pry when a > 10
a + b
end
puts add_numbers(15, 5) # Will trigger pry
puts add_numbers(5, 3) # Will not trigger pryএখানে, Pry শুধুমাত্র তখনই চালু হবে যখন a এর মান ১০ এর বেশি হবে।
৩. Advanced Pry Features
Pry শুধু ডিবাগিংয়ের জন্য নয়, এটি আরও অনেক ক্ষমতা রাখে:
- Pry Plugins: Pry এর জন্য অনেক প্লাগইন রয়েছে, যেমন pry-doc (documentation viewing), pry-rails (Rails console enhancements), ইত্যাদি।
- Command Autocompletion: Pry স্বয়ংক্রিয়ভাবে মেথড এবং ভেরিয়েবলের নাম সম্পূর্ণ করতে সহায়তা করে।
- Shell Integration: আপনি Pry এর মধ্যে Shell কমান্ডও চালাতে পারেন।
Example: Using Pry to View Method Documentation
require 'pry'
def add_numbers(a, b)
a + b
end
binding.pryএখানে, আপনি add_numbers মেথডের ডকুমেন্টেশন দেখতে পারেন show-doc add_numbers কমান্ড দিয়ে।
৪. Pry vs Byebug
Pry এবং Byebug উভয়ই ডিবাগিংয়ের জন্য ব্যবহৃত হয়, তবে তাদের মধ্যে কিছু পার্থক্য রয়েছে:
- Pry ইন্টারঅ্যাকটিভ এবং আরও শক্তিশালী ডিবাগিং ফিচার অফার করে, যেমন কোডে ইনলাইন ডিবাগিং, ইন্টারঅ্যাকটিভ শেল, প্লাগইন সাপোর্ট।
- Byebug সাধারণত ছোট প্রকল্পে এবং স্টেপ-বাই-স্টেপ ডিবাগিংয়ের জন্য ব্যবহার করা হয়।
Pry বেশি শক্তিশালী এবং উপকারী যখন আপনি ডিপ ডিবাগিং এবং কোড এক্সপ্লোরেশন করতে চান।
সারসংক্ষেপ
- Debugging Techniques: রুবিতে ডিবাগিং করার জন্য
puts,p, এবংbyebugব্যবহার করা হয়। এগুলি ভেরিয়েবল এবং কোডের মান পর্যবেক্ষণ করতে সাহায্য করে। - Pry: রুবির একটি ইন্টারঅ্যাকটিভ ডিবাগিং টুল যা কোডের যে কোনো স্থানে থামিয়ে ভেরিয়েবল এবং কোড পরীক্ষা করতে দেয়। এতে স্টেপ-বাই-স্টেপ এক্সিকিউশন, কন্ডিশনাল ব্রেকপয়েন্ট, এবং আরও অনেক ফিচার থাকে।
- Byebug: এটি একটি স্টেপ-বাই-স্টেপ ডিবাগার যা আপনাকে কোড লাইনের মধ্যে ত্রুটি শনাক্ত করতে সহায়তা করে।
- Pry এবং Byebug এর মধ্যে, Pry বেশি শক্তিশালী এবং ইন্টারঅ্যাকটিভ ফিচার প্রদান করে।
এই ডিবাগিং কৌশলগুলির মাধ্যমে আপনি রুবি কোডের ত্রুটি শনাক্ত এবং সমাধান করতে সহজেই সহায়তা পাবেন।
Read more