120 likes | 232 Vues
Debugging and Troubleshooting. INFO/CSE 100, Spring 2005 Fluency in Information Technology. http://www.cs.washington.edu/100. Readings and References. Reading Fluency with Information Technology Chapter 7, To Err is Human “To err is human, but it takes a computer to really foul things up”.
E N D
Debugging and Troubleshooting INFO/CSE 100, Spring 2005 Fluency in Information Technology http://www.cs.washington.edu/100 cse100-07-debug
Readings and References • Reading • Fluency with Information Technology • Chapter 7, To Err is Human • “To err is human, but it takes a computer to really foul things up” cse100-07-debug
Usare i computer... • In IT, le cose vanno male … debugging è il processo in cui si trovano gli errori • Termine coniato da Grace Murray Hopper • La migliore soluzione …non fare errori! • Siate accurati … e funzionerà subito • Seguite un processo che vi facilita le cose giuste • I computer non hanno “senso comune" Fanno quello che dite e solo quello. cse100-07-debug
Quando fate il Debug... • Ci sono linee guida… Piuttosto che girovagare senza meta, mettetevi nei panni di un investigatore • Chiedetevi: quali sono i miei indizi? Quali le mie ipotesi? Ho bisogno di più dati? • Guardatevi consciamente mente lavorate– è un’esperienza fuori dal corpo • Se vi affossate,non perdetevi d’animo “dove sto sbagliando?” Debugging non è algoritmo: niente è garantito siate Sherlock Holmes cse100-07-debug
Alcune direttive • Verificate che l’errore sia riproducibile • Determinate esattamente il problema • Eliminate le cause “ovvie” con la prova • Dividete il processo in parti buone e guaste • Se vi cacciate in un vicolo cieco, ridefinite le informazioni che avete, cercate di individuare l’errore • Formulate delle ipotesi e testatele cse100-07-debug
Riproducibilità • Primo passo: verificate se l’errore è riproducibile • You can't find something that you can't reproduceNon potete trovare cose non riproducibili • Uscite e tornate indietro. Capita ancora? • Fate ripartire l’applicazione. • Provate con un’applicazione diversa • Fate ripartire il sistema. A volte funziona, specialmente se il guasto è in una periferica Uscite e tornate indietro cse100-07-debug
Database vuoto Etichette Di indirizzi File degli indirizzi Niente stampa Alla ricerca del problema • Secondo passo: ipotesi sugli errori • Spesso quando accade un guasto si propaga … cercare all’indietro è una soluzione possibile NON E’ un problema di stampante cse100-07-debug
Eliminate le cose ovvie • Terzo passo:eliminate le cose ovvie “Se la causa è ovvia, il problema sarebbe stato riparato!” – si, giusto. • Ci sono alcune cose standard da controllare: • Ingressi • Connessioni • “Permessi” • Cavi • Condizioni di funzionamento La ventola non funziona, non Si accende! cse100-07-debug
Isolate il problema • Cerccate di “ripartire” la situazione in parti che funzionano e parti che NON funzionano • Formulate un’ipotesi sul guasto • Fate meno assunzioni possibili • Non prendete nulla per garantito L’obiettivo è scartare quante più cause possibili cse100-07-debug
Se finite in un vicolo cieco… • Quando tutto sembra funzionare, che rabbia! • Chiedetevi “Cosa sto trascurando?” • L’obiettivo è vedere la situazione come essa E’, non come vi sembra che sia • Sto facendo troppe ipotesi? • Sto trascurando gli indizi? • Cosa posso semplificare? • Consultate un amico cse100-07-debug
Fate previsioni e controllate • A cominciare dalle parti , seguite il processo • Una previsione mancata, dimostra… • Un possibile guasto • Un possibile errore • Una possibilità di restringere il campo di ricerca Dormirci sopra’ spesso aiuta! cse100-07-debug
Conclusioni • Il debug non è algoritmo, ma ci sono delle linee guida • State calmi – • Siate metodici • Riconoscete di essere sorpresi quando trovate il problema. • Se foste perfetti, non sbagliereste mai ... • Un po’ di umiltà non fa mai male • Guardatevi mentre fate il debug – valutate quello che fate e quello che dovete conoscere cse100-07-debug