לדלג לתוכן

פתרון תמונת תהליך וסמלים

פתרון ראשון

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

backtrace
frame 0
print *job
print (*job).id
print (*job).expected
print (*job).actual

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

פתרון שני

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

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

פתרון שלישי

נעצור בשורה שבה המשתנה כבר נוצר ולפני ההשמה ל־actual. לאחר מכן נציב מעקב ונמשיך.

watch job.actual
continue
backtrace

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

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