CodeGym সম্প্রদায়ের সবাইকে হ্যালো! আজকে ডিবাগিং সম্পর্কে কথা বলা যাক — এটা কি এবং কিভাবে IntelliJ IDEA এ ডিবাগ করতে হয়। এই নিবন্ধটি এমন লোকদের জন্য যাদের ইতিমধ্যে জাভা কোর সম্পর্কে ন্যূনতম জ্ঞান রয়েছে। লাইব্রেরি প্রকাশ করার জন্য কোন ফ্রেমওয়ার্ক বা জটিল পদ্ধতি থাকবে না। একটি অবসরে হাঁটা. তাই নিজেকে আরামদায়ক করুন এবং শুরু করা যাক!
ডকুমেন্টেশন README ফাইল অনুসারে , যা প্রকল্পের মূল ডিরেক্টরিতে পাওয়া যায়, যে সমস্ত ফুল থেকে অমৃত সংগ্রহ করা হয় তার প্রত্যাশিত আচরণ হল সংগৃহীত মধুর পরিমাণ (যা দ্বিগুণ রূপ নেয় ) এর অর্ধেকের সমান। সংগৃহীত অমৃত। প্রকল্পের নিম্নলিখিত ক্লাস আছে:
এখন সবকিছু ঠিক হবে, কিন্তু এই উত্তরটি ভুল... ডকুমেন্টেশন README ফাইল অনুসারে , অমৃত 2 থেকে 1 অনুপাতে মধুতে রূপান্তরিত হয়:
ডকুমেন্টেশন README ফাইলটিতে একটি ত্রুটি রয়েছে এবং এটি আপডেট করা দরকার৷ README ফাইলটি আপডেট করা যাক:
স্ট্যাক ওভারফ্লো কোডজিমের নিবন্ধগুলি পড়তে পারি :)
কেন আপনি ডিবাগ মোড প্রয়োজন
আসুন অবিলম্বে নিজেদের জন্য কিছু স্পষ্ট করি: বাগ ছাড়া কোন কোড নেই... জীবন এভাবেই কাজ করে। সুতরাং, যদি আমাদের কোড আমাদের প্রত্যাশা অনুযায়ী কাজ না করে তবে আমাদের টুকরো টুকরো হয়ে যাওয়া এবং হাল ছেড়ে দেওয়া উচিত নয়। কিন্তু আমাদের কি করা উচিত? ঠিক আছে, আমরাSystem.out.println
সর্বত্র বিবৃতি রাখতে পারি এবং তারপরে একটি ত্রুটি খুঁজে পাওয়ার আশায় কনসোল আউটপুট দিয়ে চিরুনি দিতে পারি। এটি বলেছে, আপনি সাবধানে লগিং ব্যবহার করে ডিবাগ করতে পারেন (এবং লোকেরা করতে পারেন)। কিন্তু আপনি যদি স্থানীয় মেশিনে আপনার কোড চালাতে পারেন তবে ডিবাগ মোড ব্যবহার করা ভাল। আমি এখনই নোট করতে চাই যে এই নিবন্ধে আমরা IntelliJ IDEA ব্যবহার করে একটি প্রকল্প ডিবাগ করার বিষয়ে বিবেচনা করব।
ডিবাগ মোড কি?
ডিবাগ মোড ডিবাগিং (চেকিং) চলমান কোডের জন্য। এটি আপনার পক্ষে নির্ধারিত স্থানে মৃত্যুদন্ড বন্ধ করা এবং জিনিসগুলি কীভাবে অগ্রসর হচ্ছে তা দেখার জন্য এটি সম্ভব করে তোলে। এটি আপনাকে কোডের একটি নির্দিষ্ট স্থানে প্রোগ্রামের অবস্থা বুঝতে দেয়। এটা ঠিক ঘড়ি থামিয়ে পাশ থেকে সবকিছু দেখতে সক্ষম হওয়ার মত। কুল, তাই না? আমাদের উদ্দেশ্য হল আমাদের প্রিয় IntelliJ IDEA ডেভেলপমেন্ট এনভায়রনমেন্ট ব্যবহার করে অ্যাপ্লিকেশনগুলিকে কীভাবে ডিবাগ করতে হয় তা দ্রুত এবং সহজে শেখা।আপনি ডিবাগিং শুরু করতে হবে কি
এখানে কিছু বিনামূল্যের পরামর্শ রয়েছে: এই নিবন্ধটি পড়ার সময়, এখানে যা বর্ণনা করা হবে তা করুন — আপনার যা যা করতে হবে তা অনুসরণ করুন। তুমি কি চাও:- IntelliJ IDEA সংস্করণ 2019.3.1 বা উচ্চতর। কারো কাছে এটি না থাকলে, এখানে একটি লিঙ্ক রয়েছে যেখানে আপনি এটি ডাউনলোড করতে পারেন ৷ কমিউনিটি সংস্করণ ডাউনলোড করুন — এটাই সেই সংস্করণ যা আমি ব্যবহার করব।
- এই GitHub প্রকল্পটি ক্লোন করুন এবং এটি IDEA এর মাধ্যমে আমদানি করুন।
শুধু একটু তত্ত্ব... আমি প্রতিশ্রুতি দিচ্ছি : ডি
একটু ডিবাগিং শুরু করতে, আপনাকে ব্রেকপয়েন্ট কী তা বুঝতে হবে এবং কয়েকটি হট কীগুলির সাথে পরিচিত হতে হবে। একটি ব্রেকপয়েন্ট হল একটি বিশেষ মার্কার যা নির্দেশ করে যে আপনি অ্যাপ্লিকেশনটির নির্বাহ বন্ধ করতে চান, সম্ভবত অ্যাপ্লিকেশন অবস্থার উপর ভিত্তি করে। আপনি বাম পাশের প্যানেলে বাম-ক্লিক করে বা কোড অবস্থানে ক্লিক করে এবং Ctrl+F8 টিপে একটি ব্রেকপয়েন্ট সেট করতে পারেন । আসুন তিন ধরনের ব্রেকপয়েন্ট দেখি: লাইন ব্রেকপয়েন্ট, ফিল্ড ওয়াচপয়েন্ট এবং এবং মেথড ব্রেকপয়েন্ট। এই এটা দেখায় কিভাবে হয়:-
একটি লাইনে:
যদি একটি বিবৃতিতে একটি ল্যাম্বডা অভিব্যক্তি থাকে, তাহলে IDEA আপনাকে সম্পূর্ণ বিবৃতিতে বা বিশেষভাবে ল্যাম্বডা অভিব্যক্তিতে ব্রেকপয়েন্ট রাখতে হবে কিনা তা বেছে নিতে অনুরোধ করে:
-
একটি পদ্ধতিতে:
-
একটি ক্লাসে:
- Bee.java:24 — 24 লাইনে মৌমাছি ক্লাসে
- Main.java:14 — 14 লাইনে প্রধান ক্লাসে
চলুন ডিবাগিং নামক এই জিনিসটি করা যাক!
আমি পরিবারের মৌমাছি পালনকারীদের একটি দীর্ঘ লাইন থেকে এসেছি, তাই ডিবাগিং চিত্রিত করার জন্য আমি যে প্রকল্পটি তৈরি করেছি তা মৌমাছিদের অমৃত সংগ্রহ, মধুতে অমৃত প্রক্রিয়াকরণ এবং তারপর মৌচাক থেকে মধু নেওয়ার প্রক্রিয়া বর্ণনা করে।- মৌমাছি - একটি সাধারণ শ্রমিক মৌমাছি
- মৌমাছি - রানী মৌমাছি
- মৌমাছির ছাঁচ - মৌমাছির ছাঁচ
- হানিপ্ল্যান্ট - একটি মধু উদ্ভিদ (অমৃত উৎস) যেখান থেকে অমৃত সংগ্রহ করা হয়
- প্রধান — এখানেই আমরা খুঁজে পাই
public static void main()
, সেই পদ্ধতি যেখানে মৃত্যুদন্ড শুরু হয়।
main()
, তাহলে আমরা দেখতে পাই যে আমাদের প্রোগ্রামটি শুধুমাত্র মধুর পরিমাণ গণনা করে না, এটি একটি ব্যতিক্রমও নিক্ষেপ করে... আমাদের তদন্ত করতে হবে এবং সমস্যাটি কী তা নির্ধারণ করতে হবে। নীচের ডানদিকের কোণায় থাকা ট্রেস স্ট্যাক থেকে, আমরা দেখতে পাচ্ছি যে একটি RuntimeException এ নিক্ষিপ্ত হয়েছে HoneyPlant.java:20
: আমরা উপরে যে বিষয়ে কথা বলছিলাম ঠিক তাই। main()
চলুন ডিবাগ মোডে পদ্ধতিটি চালানোর মাধ্যমে এই RuntimeException দেখুন । এটি করার জন্য, পদ্ধতির পাশে IntelliJ IDEA-তে সবুজ ত্রিভুজ তীরটিতে ক্লিক করুন main()
। ফলস্বরূপ, ব্যতিক্রমটি ফেলার ঠিক আগে আমরা প্রোগ্রামটি বন্ধ করে দেব এবং আমরা এই আইকনটি দেখতে পাব: সমস্ত উপলব্ধ তথ্য পেতে, আমাদের ডিবাগ বিভাগে দেখতে হবে। এটি একটি ভেরিয়েবল আছেফলক যা অ্যাপ্লিকেশনের এই অংশে উপলব্ধ সমস্ত ভেরিয়েবল দেখায়:
- অমৃত = 1.0;
- নেক্টার ক্যাপাসিটি = -1.0।
if (nectar == 0) {
return 0;
}
কিন্তু সমস্যা হল যে আমরা ভুল পরিবর্তনশীল পরীক্ষা করছি। এটি কোডের একটি ত্রুটি। ফুলে উপলব্ধ অমৃতের পরিমাণ পরীক্ষা করার পরিবর্তে (যা নেক্টার ক্যাপাসিটি ভেরিয়েবলে সংরক্ষণ করা হয়), প্রোগ্রামটি পদ্ধতির অমৃত প্যারামিটারের মান পরীক্ষা করে, যা আমরা ফুল থেকে অমৃতের পরিমাণ নিতে চাই। এটা এখানে! আমাদের প্রথম বাগ! এটি ঠিক করার পরে, আমরা নিম্নলিখিত কোডটি পাই:
if (nectarCapacity == 0) {
return 0;
}
main()
এখন পদ্ধতিটি স্বাভাবিক পদ্ধতিতে চালান (Run 'Main.main()')
। নিক্ষেপ করা কোন ব্যতিক্রম নেই, এবং প্রোগ্রাম কাজ করে: অ্যাপ্লিকেশনটি সম্পূর্ণ হওয়ার জন্য চলে এবং নিম্নলিখিত উত্তর দেয়:
"33.0 honey was produced by 7 bees from 2 honey plants"
## Documentation
Presentation based on honey production.
**Note**: 2 units of nectar = 1 unit of honey
প্রধান পদ্ধতিতে যথাক্রমে 30 এবং 40 ইউনিট অমৃত সহ দুটি মধু গাছ রয়েছে। সুতরাং আমাদের শেষ পর্যন্ত 35 ইউনিট মধু দিয়ে শেষ করা উচিত। কিন্তু প্রোগ্রাম আমাদের বলছে যে আমরা 33 পেয়েছি। অন্য দুটি ইউনিট কোথায় গেল? খুঁজে বের কর! Main.main()
এটি করার জন্য, 28 লাইনের পদ্ধতিতে একটি ব্রেকপয়েন্ট সেট করুন , যেখানে beeHive.populateHoney()
বলা হয় এবং main()
ডিবাগ মোডে পদ্ধতিটি চালান: আমরা এই বিন্দুটি আরও বিশদে বিবেচনা করব। লাইন 28 কার্যকর করার আগে প্রোগ্রামটি কার্যকর করা বন্ধ করে দেয়। নীচের অংশে, আমরা ডিবাগ বিভাগটি দেখতে পাই, যা চলমান অ্যাপ্লিকেশন সম্পর্কে সমস্ত উপলব্ধ তথ্য দেখায়। ইতিমধ্যে উল্লিখিত হিসাবে, ভেরিয়েবল প্যানে অ্যাপ্লিকেশনটির এই অংশ থেকে উপলব্ধ সমস্ত ভেরিয়েবল এবং অবজেক্ট রয়েছে। ফ্রেম ফলকটি অ্যাপ্লিকেশনটি যে ধাপগুলির মধ্য দিয়ে যাচ্ছে তা দেখায় — আপনি পূর্ববর্তী (ফ্রেম) পদক্ষেপগুলি দেখতে পারেন এবং সমস্ত স্থানীয় ডেটা দেখতে পারেন। প্রোগ্রামটি চালিয়ে যেতে, আপনি F9 বা সবুজ আইকন টিপতে পারেন, নীচে দেখানো হয়েছে: প্রোগ্রামটি বন্ধ করতে, লাল স্কোয়ারে ক্লিক করুন: ডিবাগ মোডে অ্যাপ্লিকেশনটি পুনরায় চালু করতে, তীরটিতে ক্লিক করুন: আরও, আপনি এর মাধ্যমে এগিয়ে যেতে পারেন দুটি কী ব্যবহার করে ধাপে ধাপে অ্যাপ্লিকেশন:
- F8 - পদ্ধতিতে না গিয়ে কোডের মাধ্যমে ধাপে ধাপে যান;
- F7 - কোডের মাধ্যমে ধাপে ধাপে ধাপে ধাপে পদ্ধতিতে প্রবেশ করুন।
beeHive.populateHoney()
। এটিতে ধাপে ধাপে, আমরা পেয়েছি: এখন আমরা এই পদ্ধতির মাধ্যমে ধাপে ধাপে F8 ব্যবহার করব এবং এতে কী ঘটে তা বর্ণনা করব:
- লাইন 25 — সমস্ত মৌমাছি থেকে অমৃত সংগ্রহ করতে স্ট্রিম API ব্যবহার করা হয়
- লাইন 26 — নতুন তৈরি মধু বিদ্যমান মধুতে যোগ করা হয়;
- লাইন 27 - রানীর জন্য 2 ইউনিট মধু বরাদ্দ করা হয়েছে
- লাইন 28 - এই দুটি ইউনিট মধুর মোট পরিমাণ থেকে সরানো হয়
- লাইন 29 — রানী এই মধু খায়।
## Documentation
Presentation based on honey production.
**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
সম্পন্ন করা হয়েছে. আমরা পাওয়া সব বাগ সংশোধন করেছি. আমরা শান্তভাবে একটি স্মাগ চেহারা নিয়ে চলতে পারি, কিছু কফিতে চুমুক দিতে পারি এবং আসুন সংক্ষিপ্ত করা যাক
এই নিবন্ধে, আমরা শিখেছি:- প্রত্যেকের কাজের ত্রুটি আছে এবং ডিবাগিং তাদের ঠিক করার একটি দুর্দান্ত উপায়
- ব্রেকপয়েন্ট কি এবং কি ধরনের ব্রেকপয়েন্ট আছে
- কিভাবে একটি ব্যতিক্রম ব্রেকপয়েন্ট সেট করতে হয়
- ডিবাগ মোডে কোডের মাধ্যমে কীভাবে ধাপে ধাপে যেতে হয়