JavaRush /בלוג Java /Random-HE /איתור באגים ב- 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: מדריך למתחילים - 3Debug הוא תהליך של איתור באגים (בדיקת) קוד, כאשר במהלך ביצועו ניתן לעצור במקום ייעודי ולצפות בהתקדמות הביצוע. הבן את מצב התוכנית במקום מסוים. זה בדיוק אותו דבר כאילו אתה יכול לעצור את החיים ולהסתכל על הכל מבחוץ. מגניב נכון? המטרה שלנו היא ללמוד במהירות ובקלות כיצד לנפות באגים ביישומים באמצעות סביבת הפיתוח המועדפת עלינו, Intellij IDEA.

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

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

קצת תיאוריה... אני מבטיח :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
אני רוצה לציין שכאשר אתה משכפל פרויקט, לא יהיו לך את נקודות השבירה האלה: אתה צריך להגדיר אותן בעצמך! יש גם קטע של נקודות שבירה של חריגים של Java . דבר מאוד שימושי. באמצעות זה, אתה יכול להוסיף נקודת עצירה מרומזת כך שהתוכנית תעצור לפני זריקת חריגה כלשהי או ספציפית. בואו נוסיף נקודת עצירה מרומזת עבור RuntimeException. זה נעשה בקלות: בפינה השמאלית העליונה יש סימן פלוס "+". לחץ עליו ובחר ב- Java Exceptions Breakpoints : איתור באגים ב- Intellij IDEA: מדריך למתחילים - 14בחלון שמופיע, כתוב את שם החריג שצריך להוסיף, בחר מהרשימה המוצעת ולחץ על OK : איתור באגים ב- Intellij IDEA: מדריך למתחילים - 15אנחנו מסיימים את התוכנית החינוכית הזו ועוברים לתרגול.

בוא נלך, בוא נפרץ לטבע הפראי של ניפוי הבאגים

איתור באגים ב- Intellij IDEA: מדריך למתחילים - 16מכיוון שאני כוורן תורשתי, למצגת ניפוי הבאגים יצרתי פרויקט שמתאר תהליך איסוף צוף על ידי דבורים, עיבוד צוף לדבש והשגת דבש מהכוורת. על סמך התיעוד של קובץ README, שנמצא בשורש הפרויקט, אנו קוראים: התנהגות צפויה - מכל הפרחים מהם נאסף צוף (כערך כפול ) , תיאסף כמות דבש השווה למחצית. הצוף שנאסף. בפרויקט יש את הכיתות הבאות:
  • דבורה - דבורת פועל רגילה;
  • BeeQueen - מלכת דבורים;
  • כוורת - כוורת;
  • HoneyPlant - צמח דבש ממנו אוספים דבש;
  • ראשי - היכן public static void main()נמצאת השיטה בה מתחיל הפרויקט.
אם מפעילים את השיטה main(), מסתבר שלא רק שכמות הדבש לא סופרת, אלא גם מופיעה שגיאה... איתור באגים ב- Intellij IDEA: מדריך למתחילים - 17צריך להסתכל מה לא בסדר שם. מ-Stack Trace בפינה הימנית התחתונה, אנו יכולים לראות שב- HoneyPlant.java:20, נזרק RuntimeException: איתור באגים ב- Intellij IDEA: מדריך למתחילים - 18זה בדיוק המקרה שלנו: יש RuntimeException, בואו נוסיף חיפוש אחר חריג כזה, כפי שתואר לעיל, ונפעיל main()את השיטה ב- מצב ניפוי באגים. לשם כך, לחץ על החץ המשולש הירוק ב- Intellij IDEA לפני השיטה main(): איתור באגים ב- Intellij IDEA: מדריך למתחילים - 19ונקבל את התוכנית שנעצרה ברגע לפני הפעלת החריגה עם הסמל הזה איתור באגים ב- Intellij IDEA: מדריך למתחילים - 20איתור באגים ב- Intellij IDEA: מדריך למתחילים - 21. כדי לקבל מידע מלא, עליך להסתכל בסעיף 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: מדריך למתחילים - 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, המתאר את כל המידע על האפליקציה הפועלת. החלק המשתנים, כפי שכבר הוזכר, מכיל את כל המשתנים והאובייקטים הנגישים מחלק זה של האפליקציה. החלק של Frames מציג את השלבים שהאפליקציה עוברת, ניתן להסתכל בשלב הקודם ולקבל את כל הנתונים המקומיים. כדי שהתוכנית תמשיך לעבוד, תוכל ללחוץ על F9 או על הסמל הירוק, כפי שמוצג להלן: איתור באגים ב- Intellij IDEA: מדריך למתחילים - 24כדי לעצור את התוכנית, עליך ללחוץ על הריבוע האדום: איתור באגים ב- Intellij IDEA: מדריך למתחילים - 25כדי להפעיל מחדש את היישום במצב ניפוי באגים, עליך ללחוץ על החץ: איתור באגים ב- Intellij IDEA: מדריך למתחילים - 26לאחר מכן, כדי לעבור שלב אחר שלב באפליקציה, תוכל להשתמש בשני מקשים:
  • F8 - עברו על קטע קוד ואל תכנסו לשיטות פנימיות;
  • F7 - עברו על קטע קוד והכנסו שיטות פנימיות.
לכן, כדי להכניס את השיטה לפעולה beeHive.populateHoney(), עלינו ללחוץ על F7, ונמשיך הלאה: איתור באגים ב- Intellij IDEA: מדריך למתחילים - 27לאחר מכן, נעבור את מצב ניפוי באגים באמצעות F8 באמצעות שיטה זו עד הסוף ונתאר מה קורה בשיטה זו:
  • שורה 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