מטרת מדריך זה להשלים את הפער בין החומר התאורטי הנלמד בכתה או מספר לימוד, לבין העבודה המעשית על המערכת.
המדריך מיועד לתלמידים המתחילים את הלימוד התאורטי של שפת C, וזקוקים להדרכה כיצד לכתוב ולהדר את התכניות הראשונות שלהם במערכת GNU/Linux.
המדריך נבנה על מערכת Ubuntu GNU/Linux אך כל מערכת לינוקס תתאים. הוראות ההתקנה המדוייקות ספציפיות למערכת מבוססת Debian GNU/Linux, אך ינתנו הסברים כלליים גם עבור מערכות אחרות.
עברו על המדריך לכתיבת תכנית בשפת C ובשימוש במהדר gcc ובדקו שאתם שולטים בכתיבה, הידור והרצה של תכניות C פשוטות:
כמו שראינו במדריך לשימוש ב gcc, ניתן להשתמש בדגל Wall- כדי לבקש מהמהדר לזהות יותר שגיאות בקוד. אך יש שגיאות שלא ניתן לזהות במהלך הידור התכנית, צריך לחפש אותן במהלך הריצה. תכנת valgrind מאפשרת למצוא בקוד שגיאות של דליפת זיכרון עקב חוסר שיחרור (free) זיכרון, שיחרור כפול של זיכרון, שינוי מקומות בזיכרון שלא הוקצו לנו. התכנה מסוגלת לזהות שגיאות רק בטיפול בזיכרון שקבלנו באופן דינמי במהלך התכנית ע”י malloc או new (ב C++)
כדי להפיק את המירב מתהליך בדיקת הזיכרון צריך להשאיר בקובץ ההרצה סימנים ל valgrind שיעזרו לו לתת מידע רב ככל האפשר על התכנית בזמן הריצה. אנו נבקש מהמהדר בו נשתמש gcc / g++ / as להשאיר סמנים אלו בקובץ ההרצה ע”י הדגל -g
gcc -g -Wall hello.c -o hello
הרצת 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 היה מתריע על הבעיה.
בהמשך העבודה בודאי תרצו להתקין כלי פיתוח נוספים וספריות פיתוח חדשות. אפשר למצוא מדריכים לשימוש בכלים אלו ברשת ופה באתר.
מדריכי תכנות - אוסף מדריכי התכנות בפנגווין.