Come trovare errori nel vostro codice Matlab

Debugging

Debugging significa “andare a caccia di errori”. Alcune strategie sono utilissime per trovare più velocemente gli errori nel tuo codice.

  1. Guarda i messaggi di errore: quando Matlab restituisce un messaggio di errore, nella maggior parte dei casi ha ragione, e indica il file e la riga a cui il problema si riferisce. Se ci sono più messaggi di errore, parti dal primo più in alto; solitamente è la causa anche degli altri.

  2. Cerca il caso più semplice che causa il problema. Se il tuo programma non funziona per n=1000, testalo di nuovo con n=3 e controlla se almeno in quel caso fa quello che deve. Testa il tuo programma in un esempio facile in cui sai cosa deve succedere (perché è così piccolo che sai fare i conti anche a mano, per esempio).

  3. Dividi il tuo programma in funzioni in modo da isolare il problema ancora di più. Se invece di avere due pagine di codice hai cinque funzioni da dieci righe l’una (per esempio A=crea_matrice(n), x=risolvi_sistema(A,b)…), è più facile testarle una per una e controllare quale di esse è quella che non funziona.

  4. Usa il debugger incluso in Matlab. Premendo sul simbolo - di fianco a un numero di linea, puoi inserire un breakpoint, cioè dire a Matlab di fermarsi quando raggiunge quell’istruzione per esaminare il contenuto delle variabili. Da lì poi puoi usare comandi come “continue” e “step” (per eseguire una riga per volta). In questo modo puoi esaminare direttamente quello che il computer sta facendo: quali istruzioni vengono eseguite e quanto valgono le variabili ad ogni passo.

Come chiedere aiuto

Se non riesci a capire da solo cosa non va nel tuo codice, puoi chiedere aiuto ad altre persone, per esempio ai tuoi insegnanti (noi), ad altri studenti o su internet. Per fare in modo che la comunicazione sia più rapida possibile, segui queste linee guida.

  1. Hai provato a risolverlo da solo?. Prima di chiedere aiuto a noi, hai provato a seguire i suggerimenti qui sopra? Hai provato a testare casi più semplici (dimensione minore, per esempio)?

  2. Invia tutto il codice che serve per riprodurre il problema. Se il tuo problema è che quando scrivi x=[1 2 3]; y = funzione(x) ottieni un risultato diverso, perché possiamo aiutarti è necessario che tu ci spedisca sia il testo della funzione (file funzione.m), che il testo dei comandi che esegui (x=[1 2 3]; y = funzione(x)), in un altro file o nel testo della mail. Se funzione.m utilizza altre funzioni al suo interno, assicurati di aver spedito anche quelle. Insomma, descrivi tutti i passaggi che servono per causare il problema.
    Sperabilmente, non servirà inviare troppi file, perché hai già cercato il caso più semplice. (Vero?)

  3. Usa un formato ragionevole. Tieni conto che tipicamente vorremo eseguire anche noi il tuo codice. Spedire i file .m va bene. Spedire più file raccolti in un archivio .zip va bene. Spedire una foto della schermata di Matlab scattata con il cellulare non va bene.

  4. Spiega cosa non va. Una pagina di codice con il solo commento “non funziona!” serve a poco, è come andare dal medico e dire “sto male!”. Quali sono i sintomi?
    Spiega che esercizio stai cercando di risolvere, che comandi dai, che risultato ti aspetti di ottenere, e che cosa ti viene invece. Per esempio: “sto cercando di risolvere un problema di interpolazione dall’esercizio 2 del compito del 30/02/2012; al punto 5 eseguo i comandi n=100, x = [1 2 3], e y=funzione(x, n) e ottengo come risultato y=0.5 invece di y=0.25 come nella soluzione ufficiale”.

  5. Descrivi i tentativi che hai già fatto. Mostra di aver già fatto il tuo dovere: spiega brevemente cosa hai cercato di fare per risolvere il problema: ho provato a creare un caso più semplice in questo modo, ma continuo a non capire cosa non va. Anche se lo testo con n=1 non funziona; ho provato a fare i conti a mano e non capisco perché.