שלום לכולם בקהילת CodeGym! היום בואו נדבר על ניפוי באגים - מה זה ואיך לאפות באגים ב-IntelliJ IDEA. מאמר זה מיועד לאנשים שכבר יש להם ידע מינימלי ב-Java Core. לא יהיו מסגרות או נהלים מסובכים לפרסום ספריות. טיול נינוח. אז תרגישי בנוח ובואו נתחיל!
בחר את פרויקט הצגת הבאגים ולחץ על אישור . לאחר מכן תראה את החלון הבא:
השאר את האפשרויות שנבחרו: ייבוא פרויקט ממקורות חיצוניים ו- Maven . לחץ על סיום . כעת, לאחר שייבאנו את הפרויקט, נוכל לתאר את המשך התהליך בעזרת דוגמה חיה.
הסמל בקטע ניפוי באגים. פעולה זו תשתיק את כל נקודות השבירה. כדי לראות אילו נקודות עצירה הוגדרו, אתה יכול ללכת לקטע איתור באגים בפינה השמאלית התחתונה ולמצוא את
הסמל, או ללחוץ על Ctrl+Shift+F8 :
מעבר לרשימת נקודות העצירה, נראה את הדברים הבאים:
יש שתי נקודות עצירה כאן:
בחלון שמופיע, כתוב את שם החריגה שברצונך להוסיף, בחר מהרשימה ולחץ על OK :
זה מסיים את הפריימר שלנו כיצד להגדיר דברים, אז עכשיו אנחנו' אמשיך להתאמן קצת.
התיעוד README, שניתן למצוא בספריית השורש של הפרויקט, ההתנהגות הצפויה של כל הפרחים מהם נאסף צוף היא שכמות הדבש שנאסף (הלוקח בצורה של כפול ) תהיה שווה למחצית הצוף שנאסף. בפרויקט יש את הכיתות הבאות:
צריך לחקור ולקבוע מה הבעיה. מחסנית המעקב בפינה הימנית התחתונה, אנו יכולים לראות שב-RuntimeException נזרק על
זה בדיוק מה שדיברנו עליו למעלה. בואו נסתכל על RuntimeException זה על ידי הפעלת
כתוצאה מכך, אנו נעצור את התוכנית ברגע זה ממש לפני שהחריג נזרק ונראה את הסמל הזה: ![איתור באגים ב-IntelliJ IDEA: מדריך למתחילים - 17]()
כדי לקבל את כל המידע הזמין, עלינו להסתכל בקטע Debug. יש לו חלונית משתנים המציגה את כל המשתנים הזמינים בחלק זה של היישום:
האפליקציה פועלת עד סופה ונותנת את התשובה הבאה:
התיעוד , הצוף הופך לדבש ביחס של 2 ל-1:
נשקול נקודה זו בפירוט רב יותר. התוכנית הפסיקה לפעול לפני ביצוע שורה 28. בחלק התחתון, אנו רואים את קטע Debug, המציג את כל המידע הזמין על האפליקציה הפועלת. כפי שכבר הוזכר, חלונית המשתנים מכילה את כל המשתנים והאובייקטים הזמינים מחלק זה של היישום. חלונית המסגרות מציגה את השלבים שהאפליקציה עוברת - אתה יכול להסתכל בשלבים קודמים (מסגרות) ולראות את כל הנתונים המקומיים. כדי להמשיך להפעיל את התוכנית, אתה יכול ללחוץ על F9 או על הסמל הירוק, כפי שמוצג להלן:
כדי לעצור את התוכנית, לחץ על הריבוע האדום:
כדי להפעיל מחדש את היישום במצב ניפוי באגים, לחץ על החץ:
בהמשך, אתה יכול להמשיך דרך יישום שלב אחר שלב באמצעות שני מקשים:
עכשיו נשתמש ב-F8 כדי לעבור דרך השיטה הזו ולתאר מה קורה בה:
התיעוד מכיל שגיאה ויש לעדכן אותו. בואו נעדכן את קובץ README:
Stack Overflow CodeGym :)

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


רק קצת תיאוריה... אני מבטיח :D
כדי להתחיל באגים אפילו קצת, אתה צריך להבין מהי נקודת עצירה ולהכיר כמה מקשים חמים. נקודת עצירה היא סמן מיוחד המציין היכן ברצונך להפסיק את ביצוע היישום, אולי בהתבסס על מצב היישום. אתה יכול להגדיר נקודת עצירה על ידי לחיצה ימנית בחלונית הצד השמאלית, או על ידי לחיצה על מיקום הקוד והקשה על Ctrl+F8 . הבה נסתכל על שלושה סוגים של נקודות עצירה: נקודות עצירה של קו, נקודות שמירה בשטח ונקודות עצירה בשיטת. כך זה נראה:-
על שורה:
אם להצהרה יש ביטוי למבדה, IDEA יבקש ממך לבחור אם לשים את נקודת השבירה על ההצהרה כולה או ספציפית על ביטוי למבדה:
-
על שיטה:
-
בשיעור:




- Bee.java:24 - בכיתה Bee בשורה 24
- Main.java:14 — בכיתה הראשית בשורה 14


בוא נלך לעשות את הדבר הזה שנקרא איתור באגים!
אני בא משורה ארוכה של כוורנים משפחתיים, אז הפרויקט שיצרתי להמחשת איתור באגים מתאר מודלים של תהליך של איסוף צוף של דבורים, עיבוד צוף לדבש ואז קבלת דבש מהכוורת. על פי קובץ- דבורה - דבורת פועל רגילה
- BeeQueen - מלכת הדבורים
- כוורת - הכוורת
- HoneyPlant - צמח דבש (מקור צוף) ממנו נאסף צוף
- ראשי - זה המקום שבו אנו מוצאים
public static void main()
את השיטה שבה מתחיל הביצוע.
main()
השיטה, אז נגלה שלא רק שהתוכנית שלנו לא מחשבת את כמות הדבש, היא גם זורקת חריגה... 
HoneyPlant.java:20
: 
main()
השיטה במצב ניפוי באגים. לשם כך, לחץ על חץ המשולש הירוק ב- IntelliJ IDEA לצד השיטה main()
. 


- צוף = 1.0;
- nectarCapacity = -1.0.
if (nectar == 0) {
return 0;
}
אבל הבעיה היא שאנחנו בודקים את המשתנה הלא נכון. זו שגיאה בקוד. במקום לבדוק את כמות הצוף הזמין בפרח (שמאוחסן במשתנה nectarCapacity ), התוכנה בודקת את הערך של פרמטר הצוף של השיטה , שהוא כמות הצוף שאנו רוצים לקחת מהפרח. הנה זה! הבאג הראשון שלנו! לאחר תיקון זה, נקבל את הקוד הבא:
if (nectarCapacity == 0) {
return 0;
}
כעת הפעל את main()
השיטה בדרך הרגילה (Run 'Main.main()')
. אין יוצא מן הכלל, והתוכנית פועלת: 
"33.0 honey was produced by 7 bees from 2 honey plants"
הכל יהיה בסדר עכשיו, אבל התשובה הזו שגויה... לפי קובץ README ## 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: 



- F8 — צעדו דרך הקוד מבלי להיכנס לשיטות;
- F7 — שלב דרך הקוד והכנס לשיטות.
beeHive.populateHoney()
. כשנכנסים לזה, אנחנו מקבלים: 
- שורה 25 - ה-API של Stream משמש לאיסוף צוף מכל הדבורים
- שורה 26 - הדבש החדש שנוצר מתווסף לדבש הקיים;
- קו 27 - 2 יחידות דבש מוקצות למלכה
- שורה 28 - שתי יחידות אלו מוסרות מכמות הדבש הכוללת
- שורה 29 - המלכה אוכלת את הדבש הזה.
## 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.
אנחנו סיימנו. תיקנו את כל הבאגים שמצאנו. אנחנו יכולים להמשיך ברוגע עם מבט זחוח, ללגום קצת קפה ולקרוא מאמרים על בואו נסכם
במאמר זה למדנו:- בעבודה של כולם יש שגיאות ואיתור באגים הוא דרך מצוינת לתקן אותן
- מהי נקודת שבירה ואיזה סוגי נקודות שבירה יש
- כיצד להגדיר נקודת שבירה חריגה
- כיצד לעבור דרך הקוד במצב ניפוי באגים
GO TO FULL VERSION