משהו מוזר...

OriIdan

New member
אם תמצא דרך יותר טובה לדיבאג...

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

annefan

New member
בוא נרגע ונדבר על עובדות החיים

א. קומפיילר, כל קומפיילר, בטח ובטח ++C קומפיילר, משנה לך את הקוד בהרבה מאוד צורות. (ב-++C הדבר המוכר ביותר הוא תוספת this, לכל פונקציה במחלקה שאיננה סטטית, ויש עוד הרבה מאוד). לא טוב לך, תכתוב באסמבלר (וגם ב-C יש פחות שינויים, אבל ראה סעיף ב). ב. לקומפיילר אין שום מחויבות שהקוד מכונה שהוא יוציא יכלול את כל שורות הקוד שאתה כתבת. האופטימייזר יכול להעיף, ומעיף, שורות קוד שהוא יודע שהוא לעולם לא יגיע אליהן, ממיר תנאים לביטויים שאינם צריכים branch באמת, מעיף משתנים ומציב קבועים במקומם, ועוד ועוד ועוד (ועוד). שוב, לא טוב, לא כסף. תכתוב באסמבלר. ג. הבעיה בקוד שלך נשמעת לי מוזרה. לרוב הבעיה היא הפוכה. ב-Release אין לך שום הגנה, אתה כותב לכתובות לא מאותחלות ואז מתחיל הבלגן. במקרה הטוב (כן, הטוב!) התוכנה שלך מתרסקת על Segmentation Fault. במקרה הרע, לא קורה כלום. זאת אומרת, כאילו כלום. שום דבר לא מתרסק, הכל נראה טוב, חוץ מהעובדה הקטנה שאתה כותב למקום שלא הקצת, אתה דורס נתונים אחרים שלך (או לא שלך) וכשהתוכנה מתרסקת על משהו לא ברור, וה-back traceשלך לא נראה קשור אליך בכלל, אז אתה מנסה לחשוב אולי בכל זאת היה יותר כדאי לרוץ ב-debug, או להוסיף את ההגנות האלה גם לגרסת release (לא זאת שיוצאת ללקוח, אלא זאת שהמפתחים או ה-QA בודקים) ד. גירסת debug היא גרסה בלי אופטימיזציות, כלומר איטית יותר. הרבה מאוד באגים נובעים מ-race conditions שקורים פחות כשהתוכנה עובדת לאט יותר. מעצבן? מאוד. מה הפתרון? לפתח ב-release וגם כשיש לך אינפורמצית דיבאג, אתה צריך להבין איפה הקומפיילר עשה inline על דעת עצמו, איפה הוא השמיט קוד (ראה סעיף א)? אז זהו שלא! אתה מפתח ב-debug, משתמש בכל הכלים שהקומפיילר והסביבה נותנים לך לעלות על כל באג שאתה יכול. אתה עובר ל-Release עם Debug Information ואולי גם הגנות על הזכרון, אתה עובד עם asserts על כל פוינטר (גם ב-Release!) אתה כמובן יכול להשתמש בכלים שעוזרים (Bounds Checkers, Purify, lint, ועוד ועוד). וכמו שאמרתי יש לך עוד אלטרנטיבה. לפתח באסמבלר. יש גם את הקצה השני, כמובן. אם אין לך כוח לזה, ואין לך צורך בזה, לך ל-java, לך ל-perl. במה שאני עושה היום, perl נותן לי כמעט את כל מה שאני צריך, ואם אין לי מבני נתונים מעגליים, אין לי בראש בכלל דליפות זכרון ודריסות מחסנית. ראש טוב! בקיצור, בהצלחה רבה לך! (אה, ואם תעלה את הקוד שלך, נוכל לראות מה קרה שם)
 

puchit

New member
בסדר ! תודה ../images/Emo13.gif

האמת היא שכבר פתרתי את הבעיה. ולא כדי שאני אעלה את הקוד - 2000 שורות, 17 קבצים, בלי תיעוד.... אבל זה משהו נחמד ב openGL אז אם אתם רוצים, אני אעלה את זה ב ZIP. רק תגידו
 

cybordyn

New member
לא הבנתי את הקטע של האגם הצהוב.

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

the another one

New member
הסבר :

היא הייתה בהופעה של משינה והיא אומרת שאמרו לה ( אני מנסה להימנע מתביעת דיבה
) שיובל בנאי עלה על הבמה (לטענתם) מסומם. ובשיר שלהם "בואי וניפול" במקום לשיר " בואי וניפול אל תוך עולם סגול" הוא שר " בואי וניפול אל תוך אגם צהוב" !
 

the another one

New member
אני שוב רוצה להדגיש ש

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

puchit

New member
חחחחח ../images/Emo12.gif

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