דיבוג STL

voguemaster

New member
דיבוג STL

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

DadleFish

New member
תעבוד ב-DEBUG,

בלי אופטימיזציות, ואז לא תהיה משמעות ל-inline.
 

voguemaster

New member
אני עובד ב-DEBUG ידידי

אבל אין לי שליטה על ה-inlining של הפונקציות של vector. הן תמיד inline! לפחות עד כמה שאני רואה...
 

חובבן

New member
למה אתה צריך בעצם לדבג את STL?

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

voguemaster

New member
עובד

תחת לינוקס עם GCC3.3 וה-STL שמגיע איתו (SGI זה אמור להיות ?). להיכנס לפונקציות שלו אני גם יכול (אני רואה לדוגמא את השורות שצריכות להתבצע) אבל זה לא עוזר לי. יש לי SIGSEGV בתוך stl_vector.h ואני מנסה להבין למה לכל השדים זה קורה. בכל אופן, בשלב שבו אני מקבל SIGSEGV אני משום מה כבר לא יכול להסתכל על הערכים של הווקטור (אם אני מנסה להציג איזה משתנה שלו אני מקבל הודעה: can't evaluate expression... blah... may be inlined).
 

voguemaster

New member
הממ אולי

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

חובבן

New member
עוד בעיה שנתקלתי בה לא פעם

שמירה של iterator ישן, בזמן שהקונטיינר כבר השתנה (למשל הוסיפו או מחקו איברים).
 

hatulflezet

New member
אם הבנתי נכון

אז אתה מקבל את sigsegv בגישה לאיבר בוקטור נכון? אולי זה לא מחדש לך - אבל אם אתה ניגש דרך אופרטור[] אז אין בדיקה כמו שיש עם ()at. אם אין בדיקה, ואתה סומך על הוקטור שיבצע אותה - זה מתכון לתקלות. רוב הסיכוי שהתקלה אצלך בקוד - ולא בSTL...
 

voguemaster

New member
ניגש עם front בלבד

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

DadleFish

New member
אבל inline פועל רק אם יש לך

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