משתמש:קלורק/הייזנבאג

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

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

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

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

אחת הדוגמאות הנפוצות להייזנבאג היא באג המופיע כאשר התכנית עוברת את תהליך ההידור עם מהדר אופטימיזציה, אך לא מופיע כאשר אותה התכנית עוברת הידור ללא אופטימיזציה (מה שקורה לעיתים קרובות במהלך הרצתה עם מנפה באגים). בזמן איתור באגים, ערכים שתוכנית שעברה אופיטימיזציה תשמור בדרך כלל באוגרים נדחפים לרוב לזיכרון הראשי. זה עשוי להשפיע, למשל, על התוצאה של השוואות נקודה צפה, שכן הערך בזיכרון עשוי להיות בעל טווח ודיוק קטנים יותר מהערך במאגר. באופן דומה, heisenbugs עשויים להיגרם על ידי תופעות לוואי בביטויי בדיקה המשמשים בהצהרות זמן ריצה בשפות כגון C ו- C++, שבהן ביטוי הבדיקה אינו מוערך כאשר הצהרות כבויות בקוד הייצור באמצעות המאקרו NDEBUG. [[קטגוריה:בדיקות תוכנה]] [[קטגוריה:ניפוי שגיאות]] [[קטגוריה:באגים]]

  1. ^ "The Jargon File: heisenbug".