CodeGym /وبلاگ جاوا /Random-FA /اشکال زدایی در IntelliJ IDEA: راهنمای مبتدی
John Squirrels
مرحله
San Francisco

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

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

چرا به حالت Debug نیاز دارید

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

حالت Debug چیست؟

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

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

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

فقط یه ذره تئوری... قول میدم :D

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

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

    اگر دستوری دارای عبارت لامبدا باشد، IDEA از شما می‌خواهد که نقطه شکست را روی کل عبارت قرار دهید یا به طور خاص روی عبارت لامبدا:

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

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

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

بیایید این کاری را انجام دهیم که به آن اشکال زدایی می گویند!

من از صف طولانی زنبورداران خانوادگی هستم، بنابراین پروژه ای که برای نشان دادن اشکال زدایی ایجاد کردم، فرآیند جمع آوری شهد، تبدیل شهد به عسل و سپس گرفتن عسل از کندو را توصیف می کند. با توجه به مستندات فایل README که در دایرکتوری ریشه پروژه یافت می شود، رفتار مورد انتظار همه گل هایی که از آنها شهد جمع آوری می شود این است که مقدار عسل جمع آوری شده (که به شکل دو برابر است ) برابر با نصف باشد. شهد جمع آوری شده این پروژه دارای کلاس های زیر است:
  • زنبور عسل - یک زنبور کارگر معمولی
  • BeeQueen - ملکه زنبور عسل
  • BeeHive - کندوی زنبور عسل
  • گیاه عسل - گیاه عسل (منبع شهد) که از آن شهد جمع آوری می شود
  • اصلی - این جایی است که ما 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: راهنمای مبتدی - 17اشکال زدایی در IntelliJ IDEA: راهنمای مبتدی - 18برای دریافت تمام اطلاعات موجود، باید به بخش Debug نگاه کنیم. دارای یک صفحه متغیرها است که تمام متغیرهای موجود در این بخش از برنامه را نشان می دهد:
  • شهد = 1.0;
  • ظرفیت شهد = -1.0.
پرتاب استثنا منطقی است، زیرا یک گیاه عسل نمی تواند مقدار منفی شهد داشته باشد. اما چرا این اتفاق می افتد؟ از این گذشته ، در خطوط 15-17 ، بررسی می کنیم که آیا ذخیره شهد تمام شده است یا خیر و در صورت وجود صفر برمی گردیم:
if (nectar == 0) {
   	     return 0;
}
اما مشکل اینجاست که ما متغیر اشتباهی را بررسی می کنیم. این یک خطا در کد است. این برنامه به جای بررسی مقدار شهد موجود در گل (که در متغیر nectarCapacity ذخیره می شود)، مقدار پارامتر شهد روش را بررسی می کند که مقدار شهدی است که می خواهیم از گل بگیریم. ایناهاش! اولین باگ ما! پس از رفع این مشکل، کد زیر را دریافت می کنیم:
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()متد را در حالت Debug اجرا کنید: اشکال زدایی در IntelliJ IDEA: راهنمای مبتدی - 20ما این نقطه را با جزئیات بیشتری در نظر خواهیم گرفت. اجرای برنامه قبل از اجرای خط 28 متوقف شد. در قسمت پایین، قسمت Debug را مشاهده می کنیم که تمام اطلاعات موجود در مورد برنامه در حال اجرا را نشان می دهد. همانطور که قبلا ذکر شد، پنجره Variables شامل تمام متغیرها و اشیاء موجود در این بخش از برنامه است. صفحه Frames مراحلی را که برنامه طی می‌کند نشان می‌دهد — می‌توانید به مراحل قبلی (فریم‌ها) نگاه کنید و تمام داده‌های محلی را ببینید. برای ادامه اجرای برنامه می توانید F9 یا آیکون سبز رنگ را مانند تصویر زیر فشار دهید: اشکال زدایی در IntelliJ IDEA: راهنمای مبتدی - 21برای توقف برنامه، روی مربع قرمز کلیک کنید: اشکال زدایی در IntelliJ IDEA: راهنمای مبتدی - 22برای راه اندازی مجدد برنامه در حالت اشکال زدایی، روی فلش کلیک کنید: اشکال زدایی در IntelliJ IDEA: راهنمای مبتدی - 23در ادامه، می توانید از طریق مسیر ادامه دهید. برنامه گام به گام با استفاده از دو کلید:
  • F8 - بدون وارد شدن به متدها، کد را طی کنید.
  • F7 - کد را طی کنید و وارد روش ها شوید.
در مورد ما، باید F7 را فشار دهیم تا وارد beeHive.populateHoney()روش شویم. با قدم گذاشتن در آن، دریافتیم: اکنون از F8 برای گذر از این روش اشکال زدایی در IntelliJ IDEA: راهنمای مبتدی - 24استفاده می کنیم و آنچه در آن اتفاق می افتد را شرح می دهیم:
  • خط 25 - Stream 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.
انجام شد. ما تمام اشکالاتی را که پیدا کردیم برطرف کرده ایم. ما می‌توانیم با آرامش به نگاه خود راضی ادامه دهیم، قهوه بنوشیم و مقالاتی در Stack Overflow CodeGym بخوانیم :)

بیایید خلاصه کنیم

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

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

نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION