CodeGym /בלוג Java /Random-HE /איתור באגים ב- IntelliJ IDEA: מדריך למתחילים
John Squirrels
רָמָה
San Francisco

איתור באגים ב- IntelliJ IDEA: מדריך למתחילים

פורסם בקבוצה
שלום לכולם בקהילת CodeGym! היום בואו נדבר על ניפוי באגים - מה זה ואיך לאפות באגים ב-IntelliJ IDEA. מאמר זה מיועד לאנשים שכבר יש להם ידע מינימלי ב-Java Core. לא יהיו מסגרות או נהלים מסובכים לפרסום ספריות. טיול נינוח. אז תרגישי בנוח ובואו נתחיל! איתור באגים ב-IntelliJ IDEA: מדריך למתחילים - 1

למה אתה צריך מצב ניפוי באגים

מיד נבהיר לעצמנו משהו: אין קוד בלי באגים... פשוט ככה החיים עובדים. לכן, אל לנו להתפרק ולוותר אם הקוד שלנו לא עובד כפי שציפינו. אבל מה עלינו לעשות? ובכן, נוכל לשים System.out.printlnהצהרות בכל מקום ואז לסרוק את פלט הקונסולה בתקווה למצוא שגיאה. עם זאת, אתה יכול (ואנשים עושים) לבצע ניפוי באגים באמצעות רישום קפדני. אבל אם אתה יכול להריץ את הקוד שלך על מחשב מקומי, עדיף להשתמש במצב Debug . אני רוצה לציין מיד שבמאמר זה נשקול ניפוי באגים בפרויקט באמצעות IntelliJ IDEA.

מהו מצב ניפוי באגים?

מצב ניפוי באגים מיועד לאיתור באגים (בדיקת) קוד פועל. זה מאפשר לך להפסיק את הביצוע במקומות המיועדים ולראות איך הדברים מתקדמים. זה מאפשר לך להבין את מצב התוכנית במקום מסוים בקוד. זה בדיוק כמו להיות מסוגל לעצור את השעון ולהסתכל על הכל מהצד. מגניב נכון? המטרה שלנו היא ללמוד במהירות ובקלות כיצד לנפות באגים ביישומים באמצעות סביבת הפיתוח האהובה שלנו IntelliJ IDEA.

מה אתה צריך כדי להתחיל באגים

הנה כמה עצות בחינם: בזמן קריאת המאמר הזה, עשה כל מה שיתואר כאן - יש לך את כל מה שאתה צריך לעשות כדי לעקוב אחריו. מה אתה צריך:
  1. IntelliJ IDEA גרסה 2019.3.1 ומעלה. במקרה שלמישהו אין את זה, הנה קישור שבו אתה יכול להוריד את זה . הורד את מהדורת הקהילה - זו הגרסה שבה אשתמש.
  2. שיבוט פרויקט GitHub זה וייבא אותו דרך IDEA.
פתח את IDEA: איתור באגים ב-IntelliJ IDEA: מדריך למתחילים - 2בחר את פרויקט הצגת הבאגים ולחץ על אישור . לאחר מכן תראה את החלון הבא: איתור באגים ב- IntelliJ IDEA: מדריך למתחילים - 3השאר את האפשרויות שנבחרו: ייבוא ​​פרויקט ממקורות חיצוניים ו- Maven . לחץ על סיום . כעת, לאחר שייבאנו את הפרויקט, נוכל לתאר את המשך התהליך בעזרת דוגמה חיה.

רק קצת תיאוריה... אני מבטיח :D

כדי להתחיל באגים אפילו קצת, אתה צריך להבין מהי נקודת עצירה ולהכיר כמה מקשים חמים. נקודת עצירה היא סמן מיוחד המציין היכן ברצונך להפסיק את ביצוע היישום, אולי בהתבסס על מצב היישום. אתה יכול להגדיר נקודת עצירה על ידי לחיצה ימנית בחלונית הצד השמאלית, או על ידי לחיצה על מיקום הקוד והקשה על 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 - בכיתה Bee בשורה 24
  • Main.java:14 — בכיתה הראשית בשורה 14
שים לב שנקודות השבירה האלה לא יוגדרו אוטומטית אם שיבטת את הפרויקט: תצטרך להגדיר אותן בעצמך! יש גם קטע של נקודות שבירה של חריגות Java . זה מאוד שימושי. כאן אתה יכול להוסיף נקודת שבירה מרומזת כך שהתוכנית תעצור לפני זריקת חריגה כלשהי או חריגה ספציפית. נוסיף נקודת עצירה מרומזת עבור RuntimeException. זה קל לעשות. מצא את הסמל "+" בפינה השמאלית העליונה. לחץ עליו ובחר ב- Java Exception Breakpoints : איתור באגים ב- IntelliJ IDEA: מדריך למתחילים - 12בחלון שמופיע, כתוב את שם החריגה שברצונך להוסיף, בחר מהרשימה ולחץ על OK : איתור באגים ב- IntelliJ IDEA: מדריך למתחילים - 13זה מסיים את הפריימר שלנו כיצד להגדיר דברים, אז עכשיו אנחנו' אמשיך להתאמן קצת.

בוא נלך לעשות את הדבר הזה שנקרא איתור באגים!

אני בא משורה ארוכה של כוורנים משפחתיים, אז הפרויקט שיצרתי להמחשת איתור באגים מתאר מודלים של תהליך של איסוף צוף של דבורים, עיבוד צוף לדבש ואז קבלת דבש מהכוורת. על פי קובץ התיעוד README, שניתן למצוא בספריית השורש של הפרויקט, ההתנהגות הצפויה של כל הפרחים מהם נאסף צוף היא שכמות הדבש שנאסף (הלוקח בצורה של כפול ) תהיה שווה למחצית הצוף שנאסף. בפרויקט יש את הכיתות הבאות:
  • דבורה - דבורת פועל רגילה
  • BeeQueen - מלכת הדבורים
  • כוורת - הכוורת
  • HoneyPlant - צמח דבש (מקור צוף) ממנו נאסף צוף
  • ראשי - זה המקום שבו אנו מוצאים public static void main()את השיטה שבה מתחיל הביצוע.
אם נפעיל את main()השיטה, אז נגלה שלא רק שהתוכנית שלנו לא מחשבת את כמות הדבש, היא גם זורקת חריגה... איתור באגים ב- IntelliJ IDEA: מדריך למתחילים - 14צריך לחקור ולקבוע מה הבעיה. מחסנית המעקב בפינה הימנית התחתונה, אנו יכולים לראות שב-RuntimeException נזרק על HoneyPlant.java:20: איתור באגים ב-IntelliJ IDEA: מדריך למתחילים - 15זה בדיוק מה שדיברנו עליו למעלה. בואו נסתכל על RuntimeException זה על ידי הפעלת main()השיטה במצב ניפוי באגים. לשם כך, לחץ על חץ המשולש הירוק ב- IntelliJ IDEA לצד השיטה main(). איתור באגים ב- IntelliJ IDEA: מדריך למתחילים - 16כתוצאה מכך, אנו נעצור את התוכנית ברגע זה ממש לפני שהחריג נזרק ונראה את הסמל הזה: איתור באגים ב-IntelliJ IDEA: מדריך למתחילים - 17איתור באגים ב- IntelliJ IDEA: מדריך למתחילים - 18כדי לקבל את כל המידע הזמין, עלינו להסתכל בקטע Debug. יש לו חלונית משתנים המציגה את כל המשתנים הזמינים בחלק זה של היישום:
  • צוף = 1.0;
  • nectarCapacity = -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, המציג את כל המידע הזמין על האפליקציה הפועלת. כפי שכבר הוזכר, חלונית המשתנים מכילה את כל המשתנים והאובייקטים הזמינים מחלק זה של היישום. חלונית המסגרות מציגה את השלבים שהאפליקציה עוברת - אתה יכול להסתכל בשלבים קודמים (מסגרות) ולראות את כל הנתונים המקומיים. כדי להמשיך להפעיל את התוכנית, אתה יכול ללחוץ על F9 או על הסמל הירוק, כפי שמוצג להלן: איתור באגים ב-IntelliJ IDEA: מדריך למתחילים - 21כדי לעצור את התוכנית, לחץ על הריבוע האדום: איתור באגים ב- IntelliJ IDEA: מדריך למתחילים - 22כדי להפעיל מחדש את היישום במצב ניפוי באגים, לחץ על החץ: איתור באגים ב-IntelliJ IDEA: מדריך למתחילים - 23בהמשך, אתה יכול להמשיך דרך יישום שלב אחר שלב באמצעות שני מקשים:
  • F8 — צעדו דרך הקוד מבלי להיכנס לשיטות;
  • F7 — שלב דרך הקוד והכנס לשיטות.
במקרה שלנו, אנחנו צריכים ללחוץ על F7, כדי להיכנס לשיטה beeHive.populateHoney(). כשנכנסים לזה, אנחנו מקבלים: איתור באגים ב- IntelliJ IDEA: מדריך למתחילים - 24עכשיו נשתמש ב-F8 כדי לעבור דרך השיטה הזו ולתאר מה קורה בה:
  • שורה 25 - ה-API של Stream משמש לאיסוף צוף מכל הדבורים
  • שורה 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