JavaRush /وبلاگ جاوا /Random-FA /اشکال زدایی در Intellij IDEA: راهنمای مبتدیان
Roman Beekeeper
مرحله

اشکال زدایی در Intellij IDEA: راهنمای مبتدیان

در گروه منتشر شد
سلام به همه، انجمن JavaRush. امروز در مورد اشکال زدایی صحبت خواهیم کرد: چیست و چگونه در Intellij IDEA اشکال زدایی کنیم. اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 1این مقاله برای افرادی در نظر گرفته شده است که قبلاً حداقل دانشی از Java Core دارند. هیچ چارچوب یا فرآیند پیچیده ای برای انتشار کتابخانه ها وجود نخواهد داشت. پیاده روی آسان. پس خودتان را راحت کنید و بیایید شروع کنیم!

چرا به Debug نیاز دارید؟

بیایید فوراً آن را روشن کنیم: هیچ کدی بدون اشکال وجود ندارد... زندگی اینگونه عمل می کند. بنابراین، اگر کد آنطور که انتظار داشتیم کار نکرد، نباید فوراً سست شویم و همه چیز را رها کنیم. اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 2اما چه باید کرد؟ البته، می توانید آن را System.out.printlnدر هر کجا که می توانید تنظیم کنید و سپس خروجی را در ترمینال مرتب کنید به این امید که بتوانید خطا پیدا کنید. با این حال، ممکن است... و آنها این کار را انجام می‌دهند، و با استفاده از ورود به سیستم این کار را با دقت انجام می‌دهند (شما می‌توانید در مورد آن اینجا بخوانید ). اما اگر امکان اجرای کد بر روی ماشین محلی وجود دارد، بهتر است از Debug استفاده کنید . می خواهم فوراً متذکر شوم که در این مقاله ما اشکال زدایی یک پروژه را در Intellij IDEA در نظر خواهیم گرفت. اگر علاقه مند به خواندن در مورد اشکال زدایی از راه دور هستید، در اینجا مقاله ای از منبع ما آمده است .

Debug چیست

اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 3اشکال زدایی فرآیند اشکال زدایی (بررسی) کد است که در حین اجرای آن می توانید در یک مکان مشخص توقف کرده و پیشرفت اجرا را تماشا کنید. وضعیت برنامه را در یک مکان خاص درک کنید. دقیقاً مثل این است که بتوانید زندگی را متوقف کنید و از بیرون به همه چیز نگاه کنید. باحال، درسته؟ هدف ما یادگیری سریع و آسان نحوه اشکال زدایی برنامه ها با استفاده از محیط توسعه مورد علاقه ما، Intellij IDEA است.

آنچه برای شروع اشکال زدایی نیاز دارید

من مشاوره رایگان می دهم: در حالی که مقاله را می خوانید، هر کاری که در اینجا توضیح داده خواهد شد را انجام دهید، خوشبختانه همه چیز برای این کار وجود دارد. چه چیزی نیاز دارید:
  1. محیط توسعه Intellij IDEA نسخه 2019.3.1 و بالاتر. اگر کسی آن را ندارد، اینجا یک لینک است که می توانید آن را دانلود کنید. نسخه انجمن را دانلود کنید زیرا من از آن استفاده خواهم کرد.
  2. پروژه را از GitHub کلون کنید و آن را از طریق IDEA وارد کنید.
IDEA را باز کنید: پروژه debug-presentationاشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 4 را انتخاب کنید ، روی OK کلیک کنید و دریافت کنید: پروژه واردات را از منابع خارجی رها کنید ، Maven را ترک کنید و روی Finish کلیک کنید . پس از وارد کردن پروژه، می‌توانیم فرآیند را با استفاده از یک مثال زنده توصیف کنیم. اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 5

یه تئوری کوچولو... قول میدم :D

برای شروع کمی اشکال زدایی، باید بفهمید breakPoint چیست و چند کلید میانبر که برای شروع به آن نیاز دارید را درک کنید. BreakPoint یک نشانگر ویژه است که مکان یا وضعیتی را که برنامه باید در آن متوقف شود را نشان می دهد. می توانید با کلیک چپ بر روی نوار کناری سمت چپ یا با کلیک بر روی محل کد و فشار دادن Ctrl + F8 یک نقطه شکست تعیین کنید . نقاط شکست در سه نوع وجود دارد: علامت خط، علامت متغیر و علامت روش. به نظر می رسد این است:
  • در هر خط:

    اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 6

    اگر یک لامبدا در عبارت وجود داشته باشد، IDEA به شما یک انتخاب ارائه می دهد - برای قرار دادن عبارت در کل خط یا به طور خاص در لامبدا:

    اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 7
  • هر روش:

    اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 8
  • در هر کلاس

    اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 9
نقاط شکست را می توان با دنبال کردن همان مراحلی که هنگام اضافه کردن آنها حذف کرد. موقعیت هایی وجود دارد که باید آنها را غیرفعال کنید (بی صدا). برای این کار در قسمت Debug می توانید آیکونی پیدا کنید اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 10که تمام نقاط شکست را غیر فعال می کند. برای اینکه ببینید کدام نقاط شکست قبلاً تنظیم شده‌اند، می‌توانید به Debug در گوشه پایین سمت چپ بروید و نماد را پیدا کنید اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 11، یا Ctrl+Shift+F8 را فشار دهید : اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 12وقتی به لیست نقاط شکست می‌رویم، خواهیم دید: اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 13دو نقطه پیش‌آگاه وجود دارد. اینجا:
  • Bee.java:24 - در کلاس Bee در خط 24
  • Main.java:14 - در کلاس Main در خط 14
من می خواهم توجه داشته باشم که وقتی پروژه ای را شبیه سازی می کنید، این BreakPoint ها را نخواهید داشت: باید خودتان آنها را تنظیم کنید! همچنین یک بخش جاوا Exception Breakpoints وجود دارد . یک چیز بسیار مفید با استفاده از آن، می توانید یک نقطه شکست ضمنی اضافه کنید تا برنامه قبل از پرتاب هر استثنا یا یک استثنا متوقف شود. بیایید یک نقطه شکست ضمنی برای RuntimeException اضافه کنیم. این کار به راحتی انجام می شود: در گوشه سمت چپ بالا علامت مثبت "+" وجود دارد. بر روی آن کلیک کنید و Java Exceptions Breakpoints را انتخاب کنید : اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 14در پنجره ظاهر شده، نام استثنایی را که باید اضافه شود را بنویسید، از لیست پیشنهادی انتخاب کنید و OK کنید : اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 15این برنامه آموزشی را تمام می کنیم و به تمرین می رویم.

بیایید برویم، بیایید به وحشی اشکال زدایی نفوذ کنیم

اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 16از آنجایی که من یک زنبوردار ارثی هستم، برای ارائه اشکال زدایی پروژه ای ایجاد کردم که فرآیند جمع آوری شهد توسط زنبورها، تبدیل شهد به عسل و بدست آوردن عسل از کندو را شرح می دهد. بر اساس مستندات فایل README که در ریشه پروژه نهفته است، می خوانیم: رفتار مورد انتظار - از تمام گل هایی که شهد از آنها جمع آوری می شود (به عنوان مقدار دو برابر )، مقدار عسل معادل نصف آن جمع آوری می شود. شهد جمع آوری شده این پروژه دارای کلاس های زیر است:
  • زنبور عسل - یک زنبور کارگر معمولی؛
  • BeeQueen - ملکه زنبور عسل;
  • BeeHive - کندو زنبور عسل;
  • گیاه عسل - گیاه عسل که از آن عسل جمع آوری می شود.
  • اصلی - جایی که public static void main()روشی که پروژه در آن شروع می شود قرار دارد.
اگر روش را اجرا کنید main()، معلوم می شود که نه تنها مقدار عسل حساب نمی شود، بلکه یک خطا نیز ظاهر می شود ... اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 17باید ببینید چه چیزی در آنجا اشتباه است. از stack trace در گوشه سمت راست پایین، می‌توانیم ببینیم که در HoneyPlant.java:20RuntimeException پرتاب می‌شود: اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 18این دقیقاً مورد ما است: یک RuntimeException وجود دارد، بیایید یک جستجو برای چنین استثنایی، همانطور که در بالا توضیح داده شد، اضافه کنیم، و main()روش را در حالت اشکال زدایی. برای این کار قبل از روش main(): روی فلش مثلث سبز رنگ Intellij IDEA کلیک کنید اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 19و در لحظه قبل از فعال شدن استثنا با این آیکون برنامه متوقف شده را دریافت می کنیم.برای اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 20اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 21دریافت اطلاعات کامل باید به قسمت Debug مراجعه کنید. دارای متغیرهایی است که تمام متغیرهای موجود در این بخش از برنامه را نشان می دهد:
  • شهد = 1.0;
  • ظرفیت شهد = -1.0.
استثنا پرتاب می شود، زیرا مقدار شهد موجود در گیاه عسل نمی تواند منفی باشد. اما چرا این اتفاق می افتد؟ از این گذشته ، این بررسی وجود دارد که اگر شهد تمام شود ، در خطوط 15-17 مقدار صفر برگردانده می شود:
if ( nectar == 0 ) {
         return 0;
}
اما نکته مهم این است که متغیر اشتباه را بررسی می کند ... و این یک اشکال در کد است. برنامه به جای اینکه مقدار شهد گل را که در متغیر nectarCapacity است بررسی کند، مقدار شهد را بررسی می کند که وارد روش می شود و مقداری است که می خواهند از شهد بگیرند. اینجاست، اولین باگ! بنابراین، آن را به درستی بیان می کنیم و عبارت را به دست می آوریم:
if ( nectarCapacity == 0) {
         return 0;
}
main()بعد، روش را در حالت عادی اجرا می کنیم (Run `Main.main()`)و دیگر خطایی وجود ندارد، برنامه کار کرد: برنامه کار کرد اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 22و جواب داد: "33.0 عسل توسط 7 زنبور از 2 گیاه عسل تولید شد" همه چیز خوب است، اما پاسخ این است که اشتباه است ... همه به این دلیل که در فایل مستندات README نوشته شده است که شهد به نسبت 2 به 1 تبدیل به عسل می شود:
## Documentation
Presentation based on honey getting process.

**Note**: 1 honey point = 2 nectar points
از روش اصلی می توان دریافت که دو گیاه عسل به ترتیب 30 و 40 واحد شهد وجود دارد، بنابراین در نهایت باید 35 واحد عسل بدست آورید. و می نویسد که 33. دو واحد دیگر کجا رفتند؟... حالا متوجه می شویم! برای انجام این کار، باید یک نقطه شکست در متد Main.main()در خط شماره 28، جایی که اجرا می‌شود، قرار دهیم beeHive.populateHoney()و mainمتد را در حالت Debug اجرا کنیم: اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 23اجازه دهید نگاهی دقیق‌تر به این نقطه بیندازیم. برنامه قبل از اجرای خط 28 متوقف شد. در پایین بخش Debug را می بینیم که تمام اطلاعات برنامه در حال اجرا را توضیح می دهد. همانطور که قبلا ذکر شد، قسمت Variables شامل تمام متغیرها و اشیایی است که از این قسمت برنامه قابل دسترسی هستند. قسمت Frames مراحلی را که اپلیکیشن طی می کند نشان می دهد، می توانید به مرحله قبل نگاه کنید و تمام داده های محلی را دریافت کنید. برای ادامه کار برنامه می توانید F9 یا نماد سبز رنگ را فشار دهید، مانند شکل زیر: اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 24برای توقف برنامه، باید بر روی مربع قرمز کلیک کنید: اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 25برای راه اندازی مجدد برنامه در حالت اشکال زدایی، باید روی فلش کلیک کنید: اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 26در مرحله بعد، برای رفتن مرحله به مرحله در برنامه، می توانید از دو کلید استفاده کنید:
  • F8 - بخشی از کد را مرور کنید و وارد روش های داخلی نشوید.
  • F7 - بخشی از کد را مرور کنید و متدهای داخلی را وارد کنید.
بنابراین، برای وارد کردن متد به عملیات beeHive.populateHoney()، باید F7 را فشار دهیم و به ادامه می‌پردازیم: در مرحله بعد، با استفاده از این روش از حالت اشکال‌زدایی با استفاده از F8 تا انتها اشکال زدایی در Intellij IDEA: راهنمای مبتدیان - 27عبور می‌کنیم و آنچه در این روش اتفاق می‌افتد را شرح می‌دهیم:
  • خط 25 - Stream API برای جمع آوری عسل از همه زنبورها استفاده می شود.
  • خط 26 - عسل به موجود اضافه می شود.
  • خط 27 - 2 واحد عسل برای ملکه اختصاص داده شده است.
  • خط 28 - این دو واحد از کل مقدار عسل حذف می شود.
  • خط 29 - رحم این عسل را می خورد.
همونجا رفت این دو واحد، هورا! پس از برقراری ارتباط با یک تحلیلگر تجاری، به این نتیجه می رسیم که فایل README مستندات حاوی خطا است و باید به روز شود. بیایید فایل README را به روز کنیم:
## Documentation
Presentation based on honey getting process.

**Note**:
*  1 honey point = 2 nectar points
*  2 honey point queen bee eats every time when beehive populates the honey.
و تمام: تمام اشکالات یافت شده برطرف شده اند، ما می توانیم با آرامش به نوشیدن قهوه و خواندن مقالات در هاب JavaRush با نگاهی هوشمندانه ادامه دهیم :)

خلاصه کنید

در این مقاله متوجه شدیم که:
  • هیچ کاری بدون خطا وجود ندارد و اشکال زدایی یک راه عالی برای حل آنها است.
  • نقطه شکست چیست و چه انواعی دارد.
  • نحوه پیکربندی نقطه شکست استثنا
  • نحوه پیمایش در حالت اشکال زدایی

مقاله برای خواندن

مقالات دیگر من را نیز ببینید:
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION