נקודת עצירה

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

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

תנאים לנקודת עצירה[עריכת קוד מקור | עריכה]

צורת נקודת העצירה הנפוצה ביותר היא כאשר ריצת התוכנה נעצרת בדיוק לפני שפקודה מסוימת מבוצעת. צורה זו נקראת בדרך כלל instruction breakpoint. אפשר להשתמש בתנאי עצירה מסוגים אחרים, למשל קריאה מזיכרון, כתיבה מזיכרון, או שינוי של אזור מסוים בזיכרון. צורה זו נקראת בדרך כלל conditional breakpoint, data breakpoint או watchpoint. נקודות עצירה יכולות לעצור ריצת תוכנית בזמן רצוי, על ידי לחיצה על מקש מסוים.

כלי בדיקה[עריכת קוד מקור | עריכה]

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

יישומים[עריכת קוד מקור | עריכה]

חומרה[עריכת קוד מקור | עריכה]

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

תוכנה[עריכת קוד מקור | עריכה]

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

  • הוראה שקוראת למנפה שגיאות ישירות (קריאת מערכת) או
  • הוראה לא חוקית שגורמת לפסיקה מכוונת שמטופלת על ידי מנפה השגיאות.

לחלופין,

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

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

ראו גם[עריכת קוד מקור | עריכה]