Arduino:
שימוש במנפה שגיאות
איך לעשות:
עם סביבת ה-IDE של Arduino, תוכלו להשתמש בהדפסות Serial כדי לבצע דיבאג, אבל זה קצת כמו להשתמש בפנס כדי לחקור מערה. לדיבאג אמיתי, כדאי לשדרג את המשחק עם משהו כמו הדיבאגר Atmel-ICE אשר משתלב עם סביבת ה-Arduino. הנה טעימה של פסבדו-דיבאג באמצעות Serial:
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(A0);
Serial.print("ערך חיישן: ");
Serial.println(sensorValue);
// דמיינו שאתם מצפים ל-512 כאן, אבל מקבלים 0.
// הגיע הזמן לבדוק את החיבור של החיישן
delay(1000); // המתינו שנייה לפני הקריאה הבאה
}
הריצו זאת עם המסך הסריאלי פתוח, ותראו מה החיישן שלכם משליח בזמן אמת.
צלילה עמוקה
לפני שהיו דיבאגרים, זה היה עולם של הדפסת פקודות - יכולתם רק לנחש מה קורה על ידי הדפסת הכל. דיבאג באמצעות הדפסות עדיין נפוץ, במיוחד בסביבות פשוטות יותר או על חומרה מוגבלת כמו ה-Arduino.
חלופות לאמולטורים במעגל כמו Atmel-ICE כוללים כלים לדיבאג בתוכנה כמו avr-gdb
. תוכלו לשלב אותו עם avarice
ליצירת גשר בין GDB לחומרה שלכם, דבר שמאוד שימושי לדיבאג מתקדם יותר ישירות על השבב.
בעזרת דיבאגר, תוכלו להגדיר נקודות עצירה כדי להפסיק את הביצוע בנקודות מסוימות. תוכלו לעבור על הקוד שלכם שורה אחר שורה, לבדוק זיכרון, רגיסטרים ומשתנים. זה מאפשר לכם לזהות בעיות במקום לפעול באופן לא ממוקד. כאשר מטמיעים דיבאגר, דאגו שהסביבה שלכם מוגדרת נכון - גרסאות שאינן מתאימות או כלים שהוגדרו באופן לקוי עלולים להביא לתסכול.
ראו גם
רוצים לעמוק יותר? צללו לתוך אלו:
- המדריך לדיבאג של Arduino שבכתובת Arduino Debugging
- מדריך ההתייחסות של AVR Libc להגדרה של avr-gdb: דף הבית של AVR Libc