שאלת דיבוג ב C

Orbi

New member
שאלת דיבוג ב C

שלום לכולם, רציתי לדעת מה הדרך הכי טובה לדבג רשימות מקושרות בC, נניח ואני רוצה לראות דברים שמשתנים ברשימה המקושרת, זה ניראה לי לא יעיל לשים בחלון הWATCH את המשתנים בצורה: head head->next head->next->next אז איך עושים את זה יעיל (אם בכלל)? תודה מראש.
 

DecayCell

New member
תלוי מה בדיוק אתה רוצה לדעת...

באופן עקרוני, תוכל להתקדם בלולאה, כשהחולייה הנוכחית תושם ב-tmp, ומעבר לחוליה הבאה יתבצע כך: tmp = tmp->next באופן כזה, watch על tmp יראה לך בכל פעם את החוליה הנוכחית.
 

gmorph

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

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

gmorph

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

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

Orbi

New member
המשך

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

selalerer

New member
אני חושב שהוא התכוון למשהו כזה:

int iArr=0; struct node *arr[256]; //.... //.... //The function that adds a node to the list: void add(node *newNode) { //.... //..... arr[iArr]=newNode; }​
וכמובן לא להשתמש בהשמה פשוטה כמו שאני עשיתי אלא להכניס במקום הנכון כמו ברשימה, ואז יש לך תמונת זיכרון עבור דיבוג, יותר קלה.
 

Orbi

New member
כן

את זה הבנתי, תודה על ההשקעה בכתיבת הדוגמא.
 
למעלה