CodeGym/Java Blog/এলোমেলো/IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড
John Squirrels
লেভেল 41
San Francisco

IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড

এলোমেলো দলে প্রকাশিত
সদস্যগণ
CodeGym সম্প্রদায়ের সবাইকে হ্যালো! আজকে ডিবাগিং সম্পর্কে কথা বলা যাক — এটা কি এবং কিভাবে IntelliJ IDEA এ ডিবাগ করতে হয়। এই নিবন্ধটি এমন লোকদের জন্য যাদের ইতিমধ্যে জাভা কোর সম্পর্কে ন্যূনতম জ্ঞান রয়েছে। লাইব্রেরি প্রকাশ করার জন্য কোন ফ্রেমওয়ার্ক বা জটিল পদ্ধতি থাকবে না। একটি অবসরে হাঁটা. তাই নিজেকে আরামদায়ক করুন এবং শুরু করা যাক! IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 1

কেন আপনি ডিবাগ মোড প্রয়োজন

আসুন অবিলম্বে নিজেদের জন্য কিছু স্পষ্ট করি: বাগ ছাড়া কোন কোড নেই... জীবন এভাবেই কাজ করে। সুতরাং, যদি আমাদের কোড আমাদের প্রত্যাশা অনুযায়ী কাজ না করে তবে আমাদের টুকরো টুকরো হয়ে যাওয়া এবং হাল ছেড়ে দেওয়া উচিত নয়। কিন্তু আমাদের কি করা উচিত? ঠিক আছে, আমরা System.out.printlnসর্বত্র বিবৃতি রাখতে পারি এবং তারপরে একটি ত্রুটি খুঁজে পাওয়ার আশায় কনসোল আউটপুট দিয়ে চিরুনি দিতে পারি। এটি বলেছে, আপনি সাবধানে লগিং ব্যবহার করে ডিবাগ করতে পারেন (এবং লোকেরা করতে পারেন)। কিন্তু আপনি যদি স্থানীয় মেশিনে আপনার কোড চালাতে পারেন তবে ডিবাগ মোড ব্যবহার করা ভাল। আমি এখনই নোট করতে চাই যে এই নিবন্ধে আমরা IntelliJ IDEA ব্যবহার করে একটি প্রকল্প ডিবাগ করার বিষয়ে বিবেচনা করব।

ডিবাগ মোড কি?

ডিবাগ মোড ডিবাগিং (চেকিং) চলমান কোডের জন্য। এটি আপনার পক্ষে নির্ধারিত স্থানে মৃত্যুদন্ড বন্ধ করা এবং জিনিসগুলি কীভাবে অগ্রসর হচ্ছে তা দেখার জন্য এটি সম্ভব করে তোলে। এটি আপনাকে কোডের একটি নির্দিষ্ট স্থানে প্রোগ্রামের অবস্থা বুঝতে দেয়। এটা ঠিক ঘড়ি থামিয়ে পাশ থেকে সবকিছু দেখতে সক্ষম হওয়ার মত। কুল, তাই না? আমাদের উদ্দেশ্য হল আমাদের প্রিয় IntelliJ IDEA ডেভেলপমেন্ট এনভায়রনমেন্ট ব্যবহার করে অ্যাপ্লিকেশনগুলিকে কীভাবে ডিবাগ করতে হয় তা দ্রুত এবং সহজে শেখা।

আপনি ডিবাগিং শুরু করতে হবে কি

এখানে কিছু বিনামূল্যের পরামর্শ রয়েছে: এই নিবন্ধটি পড়ার সময়, এখানে যা বর্ণনা করা হবে তা করুন — আপনার যা যা করতে হবে তা অনুসরণ করুন। তুমি কি চাও:
  1. IntelliJ IDEA সংস্করণ 2019.3.1 বা উচ্চতর। কারো কাছে এটি না থাকলে, এখানে একটি লিঙ্ক রয়েছে যেখানে আপনি এটি ডাউনলোড করতে পারেন ৷ কমিউনিটি সংস্করণ ডাউনলোড করুন — এটাই সেই সংস্করণ যা আমি ব্যবহার করব।
  2. এই GitHub প্রকল্পটি ক্লোন করুন এবং এটি IDEA এর মাধ্যমে আমদানি করুন।
আইডিইএ খুলুন: ডিবাগ-প্রেজেন্টেশনIntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 2 প্রকল্পটি নির্বাচন করুন এবং ঠিক আছে টিপুন । তারপরে আপনি নিম্নলিখিত উইন্ডোটি দেখতে পাবেন: নির্বাচিত বিকল্পগুলি ছেড়ে দিন: বহিরাগত উত্স এবং Maven থেকে প্রকল্প আমদানি করুনশেষ ক্লিক করুন . এখন যেহেতু আমরা প্রকল্পটি আমদানি করেছি, আমরা একটি জীবন্ত উদাহরণ সহ বাকি প্রক্রিয়াটি বর্ণনা করতে পারি। IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 3

শুধু একটু তত্ত্ব... আমি প্রতিশ্রুতি দিচ্ছি : ডি

একটু ডিবাগিং শুরু করতে, আপনাকে ব্রেকপয়েন্ট কী তা বুঝতে হবে এবং কয়েকটি হট কীগুলির সাথে পরিচিত হতে হবে। একটি ব্রেকপয়েন্ট হল একটি বিশেষ মার্কার যা নির্দেশ করে যে আপনি অ্যাপ্লিকেশনটির নির্বাহ বন্ধ করতে চান, সম্ভবত অ্যাপ্লিকেশন অবস্থার উপর ভিত্তি করে। আপনি বাম পাশের প্যানেলে বাম-ক্লিক করে বা কোড অবস্থানে ক্লিক করে এবং Ctrl+F8 টিপে একটি ব্রেকপয়েন্ট সেট করতে পারেন । আসুন তিন ধরনের ব্রেকপয়েন্ট দেখি: লাইন ব্রেকপয়েন্ট, ফিল্ড ওয়াচপয়েন্ট এবং এবং মেথড ব্রেকপয়েন্ট। এই এটা দেখায় কিভাবে হয়:
  • একটি লাইনে:

    IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 4

    যদি একটি বিবৃতিতে একটি ল্যাম্বডা অভিব্যক্তি থাকে, তাহলে IDEA আপনাকে সম্পূর্ণ বিবৃতিতে বা বিশেষভাবে ল্যাম্বডা অভিব্যক্তিতে ব্রেকপয়েন্ট রাখতে হবে কিনা তা বেছে নিতে অনুরোধ করে:

    IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 5
  • একটি পদ্ধতিতে:

    IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 6
  • একটি ক্লাসে:

    IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 7
ব্রেকপয়েন্টগুলি যোগ করার জন্য ব্যবহৃত একই পদক্ষেপগুলি অনুসরণ করে সরানো যেতে পারে। এমন পরিস্থিতি রয়েছে যখন আপনি তাদের নিষ্ক্রিয় (নিঃশব্দ) করতে চান। এটি করতে, IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 8ডিবাগ বিভাগে আইকনটি খুঁজুন। এটি সমস্ত ব্রেকপয়েন্ট নিঃশব্দ করবে। কি ব্রেকপয়েন্ট সেট করা হয়েছে তা দেখতে, আপনি হয় নীচের বাম কোণে ডিবাগ বিভাগে যেতে পারেন এবং আইকনটি খুঁজে পেতে পারেন IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 9, অথবা Ctrl+Shift+F8 টিপুন : IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 10ব্রেকপয়েন্টগুলির তালিকায় চলে গেলে আমরা নিম্নলিখিতগুলি দেখতে পাব: IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 11দুটি ব্রেকপয়েন্ট রয়েছে এখানে:
  • Bee.java:24 — 24 লাইনে মৌমাছি ক্লাসে
  • Main.java:14 — 14 লাইনে প্রধান ক্লাসে
অনুগ্রহ করে মনে রাখবেন যে আপনি যদি প্রকল্পটি ক্লোন করে থাকেন তবে এই ব্রেকপয়েন্টগুলি স্বয়ংক্রিয়ভাবে সেট করা হবে না: আপনাকে সেগুলি নিজেই সেট করতে হবে! এছাড়াও একটি জাভা ব্যতিক্রম ব্রেকপয়েন্ট বিভাগ রয়েছে । এটা খুবই কাজের. এখানে আপনি একটি অন্তর্নিহিত ব্রেকপয়েন্ট যোগ করতে পারেন যাতে কোনো ব্যতিক্রম বা একটি নির্দিষ্ট ব্যতিক্রম নিক্ষেপ করার আগে প্রোগ্রামটি বন্ধ হয়ে যায়। আমরা RuntimeException-এর জন্য একটি অন্তর্নিহিত ব্রেকপয়েন্ট যোগ করব। এটি করা সহজ। উপরের বাম কোণে "+" আইকনটি খুঁজুন। এটিতে ক্লিক করুন এবং জাভা এক্সেপশন ব্রেকপয়েন্ট নির্বাচন করুন : IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 12যে উইন্ডোটি প্রদর্শিত হবে সেখানে, আপনি যে ব্যতিক্রমটি যোগ করতে চান তার নাম লিখুন, তালিকা থেকে নির্বাচন করুন এবং ঠিক আছে ক্লিক করুন : IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 13এটি কীভাবে জিনিসগুলি সেট আপ করতে হয় সে সম্পর্কে আমাদের প্রাইমারটি শেষ করে, তাই এখন আমরা' কিছু অনুশীলনে অগ্রসর হব।

চলুন ডিবাগিং নামক এই জিনিসটি করা যাক!

আমি পরিবারের মৌমাছি পালনকারীদের একটি দীর্ঘ লাইন থেকে এসেছি, তাই ডিবাগিং চিত্রিত করার জন্য আমি যে প্রকল্পটি তৈরি করেছি তা মৌমাছিদের অমৃত সংগ্রহ, মধুতে অমৃত প্রক্রিয়াকরণ এবং তারপর মৌচাক থেকে মধু নেওয়ার প্রক্রিয়া বর্ণনা করে। ডকুমেন্টেশন README ফাইল অনুসারে , যা প্রকল্পের মূল ডিরেক্টরিতে পাওয়া যায়, যে সমস্ত ফুল থেকে অমৃত সংগ্রহ করা হয় তার প্রত্যাশিত আচরণ হল সংগৃহীত মধুর পরিমাণ (যা দ্বিগুণ রূপ নেয় ) এর অর্ধেকের সমান। সংগৃহীত অমৃত। প্রকল্পের নিম্নলিখিত ক্লাস আছে:
  • মৌমাছি - একটি সাধারণ শ্রমিক মৌমাছি
  • মৌমাছি - রানী মৌমাছি
  • মৌমাছির ছাঁচ - মৌমাছির ছাঁচ
  • হানিপ্ল্যান্ট - একটি মধু উদ্ভিদ (অমৃত উৎস) যেখান থেকে অমৃত সংগ্রহ করা হয়
  • প্রধান — এখানেই আমরা খুঁজে পাই public static void main(), সেই পদ্ধতি যেখানে মৃত্যুদন্ড শুরু হয়।
যদি আমরা পদ্ধতিটি চালাই main(), তাহলে আমরা দেখতে পাই যে আমাদের প্রোগ্রামটি শুধুমাত্র মধুর পরিমাণ গণনা করে না, এটি একটি ব্যতিক্রমও নিক্ষেপ করে... IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 14আমাদের তদন্ত করতে হবে এবং সমস্যাটি কী তা নির্ধারণ করতে হবে। নীচের ডানদিকের কোণায় থাকা ট্রেস স্ট্যাক থেকে, আমরা দেখতে পাচ্ছি যে একটি RuntimeException এ নিক্ষিপ্ত হয়েছে HoneyPlant.java:20: IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 15আমরা উপরে যে বিষয়ে কথা বলছিলাম ঠিক তাই। main()চলুন ডিবাগ মোডে পদ্ধতিটি চালানোর মাধ্যমে এই RuntimeException দেখুন । এটি করার জন্য, পদ্ধতির পাশে IntelliJ IDEA-তে সবুজ ত্রিভুজ তীরটিতে ক্লিক করুন main()IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 16ফলস্বরূপ, ব্যতিক্রমটি ফেলার ঠিক আগে আমরা প্রোগ্রামটি বন্ধ করে দেব এবং আমরা এই আইকনটি দেখতে পাব: IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 17IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 18সমস্ত উপলব্ধ তথ্য পেতে, আমাদের ডিবাগ বিভাগে দেখতে হবে। এটি একটি ভেরিয়েবল আছেফলক যা অ্যাপ্লিকেশনের এই অংশে উপলব্ধ সমস্ত ভেরিয়েবল দেখায়:
  • অমৃত = 1.0;
  • নেক্টার ক্যাপাসিটি = -1.0।
ব্যতিক্রমটি নিক্ষেপ করা অর্থপূর্ণ, কারণ একটি মধু গাছে নেতিবাচক পরিমাণে অমৃত থাকতে পারে না। কিন্তু কেন এমন হচ্ছে? সর্বোপরি, 15-17 লাইনে, আমরা অমৃত সরবরাহ শেষ হয়েছে কিনা তা পরীক্ষা করি এবং শূন্য ফেরত দিই যদি তা হয়:
if (nectar == 0) {
   	     return 0;
}
কিন্তু সমস্যা হল যে আমরা ভুল পরিবর্তনশীল পরীক্ষা করছি। এটি কোডের একটি ত্রুটি। ফুলে উপলব্ধ অমৃতের পরিমাণ পরীক্ষা করার পরিবর্তে (যা নেক্টার ক্যাপাসিটি ভেরিয়েবলে সংরক্ষণ করা হয়), প্রোগ্রামটি পদ্ধতির অমৃত প্যারামিটারের মান পরীক্ষা করে, যা আমরা ফুল থেকে অমৃতের পরিমাণ নিতে চাই। এটা এখানে! আমাদের প্রথম বাগ! এটি ঠিক করার পরে, আমরা নিম্নলিখিত কোডটি পাই:
if (nectarCapacity == 0) {
   	     return 0;
}
main()এখন পদ্ধতিটি স্বাভাবিক পদ্ধতিতে চালান (Run 'Main.main()')। নিক্ষেপ করা কোন ব্যতিক্রম নেই, এবং প্রোগ্রাম কাজ করে: IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 19অ্যাপ্লিকেশনটি সম্পূর্ণ হওয়ার জন্য চলে এবং নিম্নলিখিত উত্তর দেয়:
"33.0 honey was produced by 7 bees from 2 honey plants"
এখন সবকিছু ঠিক হবে, কিন্তু এই উত্তরটি ভুল... ডকুমেন্টেশন README ফাইল অনুসারে , অমৃত 2 থেকে 1 অনুপাতে মধুতে রূপান্তরিত হয়:
## 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()ডিবাগ মোডে পদ্ধতিটি চালান: IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 20আমরা এই বিন্দুটি আরও বিশদে বিবেচনা করব। লাইন 28 কার্যকর করার আগে প্রোগ্রামটি কার্যকর করা বন্ধ করে দেয়। নীচের অংশে, আমরা ডিবাগ বিভাগটি দেখতে পাই, যা চলমান অ্যাপ্লিকেশন সম্পর্কে সমস্ত উপলব্ধ তথ্য দেখায়। ইতিমধ্যে উল্লিখিত হিসাবে, ভেরিয়েবল প্যানে অ্যাপ্লিকেশনটির এই অংশ থেকে উপলব্ধ সমস্ত ভেরিয়েবল এবং অবজেক্ট রয়েছে। ফ্রেম ফলকটি অ্যাপ্লিকেশনটি যে ধাপগুলির মধ্য দিয়ে যাচ্ছে তা দেখায় — আপনি পূর্ববর্তী (ফ্রেম) পদক্ষেপগুলি দেখতে পারেন এবং সমস্ত স্থানীয় ডেটা দেখতে পারেন। প্রোগ্রামটি চালিয়ে যেতে, আপনি F9 বা সবুজ আইকন টিপতে পারেন, নীচে দেখানো হয়েছে: IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 21প্রোগ্রামটি বন্ধ করতে, লাল স্কোয়ারে ক্লিক করুন: IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 22ডিবাগ মোডে অ্যাপ্লিকেশনটি পুনরায় চালু করতে, তীরটিতে ক্লিক করুন: IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 23আরও, আপনি এর মাধ্যমে এগিয়ে যেতে পারেন দুটি কী ব্যবহার করে ধাপে ধাপে অ্যাপ্লিকেশন:
  • F8 - পদ্ধতিতে না গিয়ে কোডের মাধ্যমে ধাপে ধাপে যান;
  • F7 - কোডের মাধ্যমে ধাপে ধাপে ধাপে ধাপে পদ্ধতিতে প্রবেশ করুন।
আমাদের ক্ষেত্রে, আমাদের F7 টিপতে হবে, পদ্ধতিতে পদক্ষেপ নিতে beeHive.populateHoney()। এটিতে ধাপে ধাপে, আমরা পেয়েছি: এখন আমরা এই পদ্ধতির মাধ্যমে ধাপে ধাপে F8IntelliJ IDEA-তে ডিবাগিং: একটি শিক্ষানবিস গাইড - 24 ব্যবহার করব এবং এতে কী ঘটে তা বর্ণনা করব:
  • লাইন 25 — সমস্ত মৌমাছি থেকে অমৃত সংগ্রহ করতে স্ট্রিম API ব্যবহার করা হয়
  • লাইন 26 — নতুন তৈরি মধু বিদ্যমান মধুতে যোগ করা হয়;
  • লাইন 27 - রানীর জন্য 2 ইউনিট মধু বরাদ্দ করা হয়েছে
  • লাইন 28 - এই দুটি ইউনিট মধুর মোট পরিমাণ থেকে সরানো হয়
  • লাইন 29 — রানী এই মধু খায়।
তাহলে নিখোঁজ দুই ইউনিট কোথায় গেল! হুররে! একজন ব্যবসায়িক বিশ্লেষকের সাথে কথা বলার পরে, আমরা উপসংহারে পৌঁছেছি যে ডকুমেন্টেশন README ফাইলটিতে একটি ত্রুটি রয়েছে এবং এটি আপডেট করা দরকার৷ README ফাইলটি আপডেট করা যাক:
## 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.
সম্পন্ন করা হয়েছে. আমরা পাওয়া সব বাগ সংশোধন করেছি. আমরা শান্তভাবে একটি স্মাগ চেহারা নিয়ে চলতে পারি, কিছু কফিতে চুমুক দিতে পারি এবং স্ট্যাক ওভারফ্লো কোডজিমের নিবন্ধগুলি পড়তে পারি :)

আসুন সংক্ষিপ্ত করা যাক

এই নিবন্ধে, আমরা শিখেছি:
  • প্রত্যেকের কাজের ত্রুটি আছে এবং ডিবাগিং তাদের ঠিক করার একটি দুর্দান্ত উপায়
  • ব্রেকপয়েন্ট কি এবং কি ধরনের ব্রেকপয়েন্ট আছে
  • কিভাবে একটি ব্যতিক্রম ব্রেকপয়েন্ট সেট করতে হয়
  • ডিবাগ মোডে কোডের মাধ্যমে কীভাবে ধাপে ধাপে যেতে হয়

পড়ার জন্য প্রবন্ধ

মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই