מה זה symbols ?

cstl

New member
מה זה symbols ?

היי,

נראה לי שדי מיציתי את השאלה בכותרת אבל אני מרגיש צורך להוסיף גם קצת תוכן

אז מה זה בדיוק Symbols, או בשמם המלא Debugging Symbols ?
הבנתי פחות או יותר שהם "יצורים" שמחזיקים אינפורמציה לגבי אלמנטים בקוד המקור שאינם קיימים יותר בקובצי הרצה לאחר קימפול (שמות משתנים, פונקציות וכו').
או משהו כזה... אני בכיוון?

תודה מראש
 

selalerer

New member
symbols באופן כללי הכוונה לכל דבר שנתת לו שם

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

לדוגמא: שמות משתנים ושמות של פונקציות.

בכדי שתוכל בעזרת debugger לדבאג את התוכנית שלך יותר בקלות, מוסיפים מידע נוסף לתוכנית שהקומפיילר יוצר. המידע הזה נקרא debug info וחל ממנו זה גם ה-debug symbols. הם אומרים ל-debugger למשל שכתובת מסויימת בקוד זה פונקציה בשם כזה כזה וכתובת מסויימת ב-data זה משתנה בשם זה וזה.
 

cstl

New member
OK, אז בוא נמשיך פה...

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

תודה שוב
 

selalerer

New member
דבר ראשון, יש שתי צורות מקובלות ל-deubg info

בהתאם לכלי הפיתוח שאתה משתמש בהם.

- שה-debug info יושב בקבצים נפרדים.
- שה-debug info ממש מוטמע בתוך הקבצי הרצה.

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

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

יש חברות וארגונים שמשחררות את המוצר עם debug info ויש שלא וזה גם להשתנות לכל מוצר בתוך אותה חברה. כל אחד לפי שיקוליו שלו.


עוד דבר שכדאי לדבר עליו זה הנושא של optimized code. לקומפיילרים שונים יש אפשרות לנסות ולייעל את התוכנה שתרוץ מהר יותר ותנצל את המחשב ביעילות רבה יותר.

כאשר בונים את התוכנה לצרכים פנימיים של בדיקות פשוטות, בד"כ מורים לקומפיילר לא לעשות אופטימיזציות. זה מקל על מציאת בעיות ועבודה עם debugger (בין אם יש debug info ובין אם לא).

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

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

cstl

New member
אחלה

נתת לי פה מספיק חומר למחשבה...
תודה רבה לך
 
למעלה