ניפוי שגיאות

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

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

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

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

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

ראו גם

קישורים חיצוניים