ניפוי שגיאות

נִפּוּי שְׁגִיאוֹת, נִפּוּי תְּקָלִים או בקיצור ניפויאנגלית: debugging, דִּיבָּגִינְג; בעברית: דִּיבּוּג), הוא תהליך שיטתי של איתור והפחתת באגים (תקלים) בתוכנת מחשב או בחומרה אלקטרונית, כדי לגרום להם לפעול כפי שתוכננו. ככל שמתקיימים יותר קשרים בין תת-מערכות או שהמערכת חסרת סדר, כך תהליך ניפוי השגיאות יהיה קשה יותר.

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

באופן עקרוני שפות תכנות עיליות, כגון Java, הופכות את ניפוי השגיאות לקל יותר, כיוון שהן כוללות אפשרויות כמו טיפול בחריגות (exception handling) שמקל על זיהוי הקוד שבגללו התוכנית פועלת בצורה פגומה. עם זאת, במקרה של תכנות מונחה אירועים שממומש בשפות אלו קיים קושי לעקוב אחרי התהליכים בשל העובדה כי התוכנה פועלת באופן שאיננו רציף, גם ריבוי נימים בתוכנית או תקשורת בין תוכניות שונות גורם לבעיה דומה. בשפות תכנות אשר נוגעות יותר בחומרה ובהגדרות בסיסיות (low level), כגון שפות התכנות C או שפת סף, באגים יכולים ליצור בעיות "שקטות" כמו - השחתת זיכרון, ותדיר קשה למצוא היכן הבעיה הראשונית החלה; במקרים כאלה נדרש בדרך כלל שימוש בכלי ניפוי מורכבים.

לניפוי שגיאות של חומרה אלקטרונית (כגון חומרה של מחשב), תוכנות בסיסיות שמתייחסות בעיקר לחומרה (כגון BIOS) או קושחה (firmware), משתמשים באחד, או יותר, מהכלים הבאים: אוסצילוסקופ, מאבחן לוגי ואמולטור תוך־מעגלי (ICE). אמולטור זה יכול לתפקד בצורה דומה למנפה שגיאות של תוכנה, רק הפעם על תוכנה בסיסית וקושחה. שגיאה במיקרוקוד של מעבד עלולה לגרום לבאגים קשים במיוחד לגילוי, בין השאר בשל הצורך לבדוק אפשרויות רבות במיוחד והנטייה להתייחס אל המעבד כאל "קופסה שחורה".

ראו גם עריכה

קישורים חיצוניים עריכה