ניפוי שגיאות (debugging, דיבוג) הוא תהליך שיטתי של מציאת והפחתת באגים, תקלות בתוכנה או בחומרה, כדי שהמערכת תפעל כפי שתוכננה. ככל שיש יותר חיבורים בין תת־מערכות או שהמערכת פחות מסודרת, כך הניפוי הופך לקשה יותר.
ניפוי שגיאות לרוב משעמם ומאתגר. הקושי תלוי בשפת התכנות ובכלים הזמינים. מנפות שגיאות, כלים שמאפשרים לעקוב אחרי הרצת התוכנית, לעצור אותה, להריץ שלבים בודדים ולשנות ערכים בזיכרון, מקלות על המשימה.
שפות תכנות עיליות, כמו Java, מקלות את הניפוי כי הן כוללות מנגנונים כמו טיפול בחריגות (exception handling), דרך לטפל בשגיאות בזמן ריצה ולזהות איפה הבעיה התרחשה. אך גם בהן יש קשיים: בתוכנות שמונעות מאירועים או מריבוי נימים קשה לעקוב אחרי הזרימה כי ההרצה אינה רציפה.
בשפות נמוכות יותר, כמו C או שפת סף, שגיאות יכולות לגרום לשחיתות זיכרון ותקלות שקטות שקשה לאתר. במקרים כאלה נדרשים כלי ניפוי מתקדמים.
בניפוי חומרה, קושחה (firmware) ותוכנות בסיסיות כמו BIOS משתמשים בכלים כמו אוסצילוסקופ, מציג אותות חשמליים, מאבחן לוגי, בודק סיגנלים דיגיטליים, ואמולטור תוך־מעגלי (ICE), שמרכיב סביבת הרצה ובקרה לחומרה. שגיאות במיקרוקוד של מעבד קשות במיוחד לאיתור, מפני שקשה לראות מה קורה בתוך המעבד.
ניפוי שגיאות הוא למצוא ולתקן באגים. באג, תקלה בתוכנה או בחומרה.
זה יכול להיות קשה, במיוחד כשיש הרבה חלקים שמתקשרים אחד עם השני.
מנפה (debugger) הוא כלי שעוזר לעצור את התוכנית ולבדוק מה קורה בה.
שפות כמו Java עוזרות למצוא שגיאות בעזרת טיפול בחריגות. טיפול בחריגות, דרך לתפוס שגיאות בזמן ריצה.
שפות קרובות לחומרה, כמו C, יכולות לגרום לשגיאות שקשה לראות. לדוגמה, שחיתות זיכרון, כשנתונים נשחטים.
בחומרה ובתוכנות בסיסיות (כמו BIOS ו־firmware) משתמשים בכלים אחרים:
- אוסצילוסקופ, מראה אותות חשמליים.
- מאבחן לוגי, בודק סיגנלים דיגיטליים.
- אמולטור תוך־מעגלי (ICE), מדמה את החומרה ועוזר לבדוק אותה.
שגיאות בתוך המעבד עצמה קשות מאוד למצוא, כי קשה לראות מה קורה בפנים.
תגובות גולשים