שימוש בסיסי ב valgrind

מטרת המדריך

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

למי מיועד המדריך

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

על איזו מערכת נבנה המדריך

המדריך נבנה על מערכת Ubuntu GNU/Linux אך כל מערכת לינוקס תתאים. הוראות ההתקנה המדוייקות ספציפיות למערכת מבוססת Debian GNU/Linux, אך ינתנו הסברים כלליים גם עבור מערכות אחרות.

לפני תחילת העבודה

עברו על המדריך לכתיבת תכנית בשפת C ובשימוש במהדר gcc ובדקו שאתם שולטים בכתיבה, הידור והרצה של תכניות C פשוטות:

הידור בעזרת gcc

כמו שראינו במדריך לשימוש ב gcc, ניתן להשתמש בדגל Wall- כדי לבקש מהמהדר לזהות יותר שגיאות בקוד. אך יש שגיאות שלא ניתן לזהות במהלך הידור התכנית, צריך לחפש אותן במהלך הריצה. תכנת valgrind מאפשרת למצוא בקוד שגיאות של דליפת זיכרון עקב חוסר שיחרור (free) זיכרון, שיחרור כפול של זיכרון, שינוי מקומות בזיכרון שלא הוקצו לנו. התכנה מסוגלת לזהות שגיאות רק בטיפול בזיכרון שקבלנו באופן דינמי במהלך התכנית ע”י malloc או new (ב C++)

כדי להפיק את המירב מתהליך בדיקת הזיכרון צריך להשאיר בקובץ ההרצה סימנים ל valgrind שיעזרו לו לתת מידע רב ככל האפשר על התכנית בזמן הריצה. אנו נבקש מהמהדר בו נשתמש gcc / g++ / as להשאיר סמנים אלו בקובץ ההרצה ע”י הדגל -g

  gcc -g -Wall hello.c -o hello

valgrind

הרצת valgrind עבור קובץ ההרצה hello שיצרנו בפקודה למעלה (בשונה מ gdb יש לתת את ה path המלא, אל התכנית שלנו).

  valgrind --tool=memcheck --leak-check=yes ./hello

לאחר הרצת valgrind נקבל דו”ח של שגיאות בניהול זיכרון בתכנית שלנו.

לדוגמה בתכנית hello אין הקצעת זיכרון דינמית, לכן נקבל:

  ==10999== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 11 from 1)
==10999== malloc/free: in use at exit: 0 bytes in 0 blocks.
==10999== malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
==10999== For counts of detected errors, rerun with: -v
==10999== No malloc'd blocks -- no leaks are possible.

אם הידרנו את התכנית עם הדגל -g והיתה בתכנית שגיאה בשימוש בזיכרון דינאמי, valgrind היה מתריע על הבעיה.

איך להמשיך

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

מדריכי תכנות

מדריכי תכנות - אוסף מדריכי התכנות בפנגווין.

מדריכים/שימוש_בסיסי_ב_valgrind.txt · שונה לאחרונה ב: 2008/06/19 18:34 (עריכה חיצונית)
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0