Salut.
L'AtMega328 dispose du debugWire, qui permet le debug à l'aide d'un boîtier Atmel-lCE par exemple.
En 30 ans de carrière je n'ai eu recours à un debugger qu'à de rares occasions, tout simplement car quand je développe du logiciel je préfère utiliser des traces logicielles, Serial.print() dans le monde ARDUINO, qui permettent de suivre en temps (pratiquement) réel le déroulement du logiciel.
Les traces logicielles alourdissent le code et le ralentissent, mais on peut facilement les activer / désactiver à l'aide de quelques macros :
#define LOGS_ACTIVE
#ifdef LOGS_ACTIVE
#define log_print Serial.print
#define log_println Serial.println
#else
#define log_print
#define log_println
#endif
void setup()
{
Serial.begin(115200);
log_println("***** BOOT *****");
}
void loop()
{
}
Dans cet exemple il te suffit de commenter la ligne pour désactiver les traces :
//#define LOGS_ACTIVE
Je pense que les traces logicielles sont le meilleur moyen de juger du bon déroulement d'un logiciel. Un debugger n'est utile que si tu cherches à déboguer des portions de code critiques, interruptions pas exemple, où les traces logicielles sont inutilisables.