ניפוי באגים עם ליקוי חמה

1. סקירה כללית

במדריך מהיר זה נראה כיצד ניתן לנקות באגים בתוכניות ג'אווה באמצעות Eclipse IDE.

2. מושגי יסוד

ל- Eclipse תמיכה נהדרת באגים ביישומים. זה מדמיין ביצוע שלב אחר שלב ועוזר לנו לחשוף באגים.

כדי להדגים את תכונות הבאגים באקליפס, נשתמש בתוכנית לדוגמא PerfectSquareCounter. תוכנית זו סופרת את סך הריבועים המושלמים ואפילו הריבועים המושלמים תחת מספר נתון:

מחלקה ציבורית PerfectSquareCounter {static int evenPerfectSquareNumbers = 0; ראשי ריק סטטי ציבורי (String [] args) {int i = 100; System.out.println ("סה"כ ריבועים מושלמים:" + calcountCount (i)); System.out.println ("אפילו ריבועים מושלמים:" + evenPerfectSquareNumbers); } int static int calcountCount (int i) {int perfectSquaresCount = 0; עבור (int number = 1; number <= i; number ++) {if (isPerfectSquare (number)) {perfectSquaresCount ++; אם (מספר% 2 == 0) {evenPerfectSquareNumbers ++; }}} להחזיר perfectSquaresCount; } בוליאני סטטי פרטי isPerfectSquare (int מספר) {double sqrt = Math.sqrt (number); החזר sqrt - Math.floor (sqrt) == 0; }}

2.1. מצב ניפוי באגים

ראשית, אנחנו צריכים הפעל את תוכנית Java בתוך Eclipse במצב ניפוי באגים. ניתן להשיג זאת בשתי דרכים:

  • לחץ לחיצה ימנית על העורך ובחר ניפוי שגיאות כמו -> יישום Java (מוצג בתצלום המסך למטה)
  • לנפות התוכנית מסרגל הכלים (מודגשת בצילום המסך למטה)

2.2. נקודות מעבר

אנחנו צריכים הגדר את הנקודות בהן ביצוע התוכנית אמור להשהות לחקירה. אלה נקראים נקודות עצירה והם רלוונטיים לשיטות. ניתן להגדיר אותם גם בכל עת לפני הביצוע או במהלכו.

בעיקרון, ישנן שלוש דרכים להוסיף נקודות עצירה לתוכנית:

  • לחץ באמצעות לחצן העכבר הימני על סרגל הסמן (סרגל אנכי) המתאים לשורה ובחר באפשרות החלף נקודת שבירה (מוצג בצילום המסך למטה)
  • ללחוץ Ctrl + Shift + B בשורה הדרושה בזמן שהותך בעורך
  • לחץ פעמיים על סרגל הסמן (סרגל אנכי) המתאים לקו הדרוש

2.3. בקרות זרימת קוד

כעת, כאשר הבאגים נעצר בנקודות ההפסקה הנתונות, נוכל להמשיך בביצוע נוסף.

נניח כי הבאגים ממוקם כרגע לפי צילום המסך שלמטה, בשורה 16:

אפשרויות הבאגים הנפוצות ביותר הן:

  • צעד לתוך (F5) - פעולה זו נכנסת לשיטות משמש בקו הנוכחי (אם קיים); אחרת, זה ממשיך לשורה הבאה. בדוגמה זו ייקח את הבאגים לשיטה isPerfectSquare ()
  • צעד מעל (F6) - פעולה זו מעבדת את הקו הנוכחי וממשיכה לשורה הבאה. בדוגמה זו פעולה זו תבצע את השיטה isPerfectSquare () והמשך לשורה הבאה
  • צעד חזרה (F7) - פעולה זו מסיימת את השיטה הנוכחית ומחזירה אותנו לשיטת הקריאה. מכיוון שבמקרה זה, יש לנו נקודת שבירה בלולאה, היא עדיין תהיה בתוך השיטה, אחרת זה יחזור לשיטה העיקרית
  • קורות חיים (F8) - פעולה זו פשוט תמשיך בביצוע עד לסיום התוכנית אלא אם כן נקלע לכל נקודת שבר נוספת

2.4. נקודת מבט לאיתור באגים

כשאנחנו מתחילים את התוכנית במצב ניפוי באגים, Eclipse יבקש אפשרות לעבור לפרספקטיבה של איתור באגים. נקודת המבט של איתור באגים היא אוסף של כמה תצוגות שימושיות שעוזרות לנו לדמיין את הבאגים לאינטראקציה.

אנו יכולים גם לעבור לפרספקטיבה של ניקוי באגים באופן ידני בכל עת.

להלן כמה תצוגות שימושיות ביותר שכוללות:

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

3. טכניקות

בחלק זה נעבור על כמה טכניקות חשובות שיעזרו לנו לשלוט באגים באקליפס.

3.1. משתנים

אנו יכולים לראות את ערכי המשתנים במהלך הביצוע תחת תצוגת המשתנים. על מנת לראות את המשתנים הסטטיים, אנו יכולים לבחור באפשרות הנפתחת Java -> הצג משתנים סטטיים.

באמצעות תצוגת המשתנים, ניתן לשנות כל ערך לערך הרצוי במהלך הביצוע.

לדוגמא, אם נצטרך לדלג על מספר מספרים ולהתחיל ישירות עם המספר 80, נוכל לעשות זאת על ידי שינוי ערך המשתנה מספר:

3.2. בדיקת ערכים

אם עלינו לבדוק את הערך של ביטוי או משפט של Java, נוכל לבחור את הביטוי המסוים בעורך, ללחוץ באמצעות לחצן העכבר הימני ולבדוק, כפי שמוצג להלן. קיצור דרך שימושי הוא מכה Ctrl + Shift + I על הביטוי כדי לראות את הערך:

למקרה שנצטרך לבדוק באופן קבוע את הביטוי הזה, נוכל ללחוץ לחיצה ימנית ולצפות. כעת, זה מתווסף לתצוגת הביטויים וניתן לראות את ערך הביטוי עבור ריצות שונות.

3.3. איתור באגים במעטפת

בהקשר של מושב ניפוי באגים, אנו יכולים לכתוב ולהפעיל קוד מותאם אישית כדי להעריך אפשרויות. זה נעשה במעטפת הבאגים.

לדוגמה, אם עלינו לבדוק את נכונות ה- sqrt פונקציונליות, נוכל לעשות זאת במעטפת הבאגים. על הקוד, לחץ לחיצה ימנית -> בדוק כדי לראות את הערך:

3.4. נקודות עצירה מותנות

יהיו מקרים בהם אנו רוצים לבצע ניפוי באגים רק בתנאים ספציפיים. אנו יכולים להשיג זאת על ידי הוספת תנאים לנקודת הפסקה באחת משתי דרכים:

  • לחץ לחיצה ימנית על נקודת השבר ובחר מאפייני נקודת עצירה
  • בתצוגת נקודת עצירה, בחר את נקודת השבר וציין את התנאי

לדוגמא, אנו יכולים לציין את נקודת השבר שתשהה את הביצוע רק אם מספר שווה ל 10:

3.5. נקודות תצפית

מהנקודות הפסקה מיועדות לשיטות, נקודות המשמר מיועדות למשתנים ברמת הכיתה. בדוגמה הנוכחית הזו, נקודת השבר ב evenPerfectSquareNumbers הכרזה נקראת נקודת תצפית. כעת, הבאגים ישהה ​​את הביצוע בכל פעם שניתן לגשת לשדה או לשנות אותו בנקודת תצפית.

זוהי התנהגות ברירת המחדל, שניתן לשנות במאפייני נקודת השעון.

בדוגמה זו, הבאגים יפסיק את הביצוע בכל פעם שריבוע מושלם הוא מספר זוגי:

3.6. נקודות טריגר

נניח שאנו מנקים באגים בנושא מורכב ביישום עם כמות עצומה של קוד מקור. ניפוי הבאגים ימשיך להשעות את הזרימה עקב נקודות עצירה מפוזרות.

כאשר נקודת הפסקה מסומנת כנקודת טריגר, המשמעות היא ששאר נקודות ההפסקה יופעלו רק אם נקודת פריצה זו תיפגע.

לדוגמא, בצילום המסך למטה נקודת השבירה פועלת isPerfectSquare () אמור להכות עבור כל איטרציה בלולאה. עם זאת, ציינו את נקודת השבר ב- countCount () שיטה כנקודת טריגר, יחד עם מצב.

לכן, כאשר ספירת האיטרציה תגיע ל -10, זה יפעיל את שאר נקודות ההפסקה. מכאן, מעתה ואילך, אם נקודת השבר ממשיכה isPerfectSquare () נפגע, ההוצאה להורג תושעה:

3.7. ניפוי באגים מרחוק

לבסוף, אם היישום פועל מחוץ ל- Eclipse, אנו עדיין יכולים להשתמש בכל הפונקציות שלעיל, בתנאי שהיישום המרוחק מאפשר ניפוי באגים. מתוך ליקוי חמה, היינו בוחרים ניפוי באגים כיישום Java מרוחק.

4. מסקנה

במדריך מהיר זה ראינו את היסודות ואת הטכניקות השונות של איתור באגים בתוכניות ב- Eclipse IDE.

כמו תמיד, קוד המקור המשמש בתרגיל זה זמין באתר GitHub.