curiosità sul debugging

...volevo confrontarmi/conoscere le vostre esperienze riguardante il debug; che metodo utilizzate? esistono alternative oltre a flashare arduino? insomma, un po' mi scoccia dover fare troppi upload per testare tutte le varianti del listato.. :blush: esistono simulatori o altre soluzioni?

Grazie!! :D

il metodo che utilizzo io è quello piu' noioso, mille upload con controlli sulla seriale...

GianfrancoPa: il metodo che utilizzo io è quello piu' noioso, mille upload con controlli sulla seriale...

+1. Penso sia l'unica...

+1. Penso sia l'unica...

Non e' l'unica. :roll_eyes:

A volte scrivo una simulazione di un modulo in C++ provandolo direttamente in Visual Studio e/o gcc. Quando il modulo funziona a dovere viene integrato nello sketch. Se organizzi bene gli include e delle #ifdef riesci a lavorare in modo molto efficiente senza dover ricopiare il codice.

Le funzioni tipo digitalread/digitalwrite ed analogread etc puoi simulare con valori letti da un file (e scritti).

Il metodo applicato dipende ovviamente dal problema specifico. Se, ad esempio, hai un problema di comunicazione SPI con qualche periferica non puoi usare una simulazione (se non hai un altro board con un JTAG).

Problematiche che puoi risolvere in questo modo molto piu' facilmente sono ad esempio la implementazione di una macchina a stati, per i menu (se ci sono), vedere algoritmi (filtri?). In ogni caso e' importante saper isolare le varie problematiche e di ordinarli in classi testati.

come dice scjurgen un codice C++ generico ( senza funzioni specifiche per pilotare il HW) puó essere eseguito in un altro compilatore C++. Quando si incominca a avere pilotaggio e risposte dal elettronica aggiuntiva non puó essere simulata (dicamo in modo semplice con le conoscenze di un programmatore amatoriale ben preparato). Non resta nient altro da fare che caricare il programma su Arduino e mettere in punti importanti la stampa di variabili sul teminale per vedere il comportamento del codice in quei punti. Tanta esperienza di programmazione evita di fare certi errori e percui fa piú piccola la necessita di debuggare; ma nessun programmatore é perfetto e il controllo e la verifica del codice é un lavoro che comporta dei tempi maggiori della programmazione stessa.

Ciao Uwe