Prof. Pagani Corrado IL DEBUGDEL SOFTWARE

Documenti analoghi
DEBUGGING. Ivan Lanese

FUNZIONI. Ivan Lanese

DEBUGGING. Ivan Lanese

Esercitazioni di Fondamenti Informatica - Modulo A 1

Fondamenti di Informatica

Lab 01 Introduzione a Codelite

Informatica Problema Algoritmo Programma

ISTRUZIONI DEVC++ Autore: Luca Florio (luca.florio<at>polimi.it)

Creare un nuovo progetto. Marco Bonelli a.s. 2016/2017. San Secondo P.se I,T.I.S. G. Galilei Department of Computer Science.

Cos'è il Debug? Il debug di un programma è la fase di ricerca e correzione di errori che si manifestano a runtime

2 Lavorare con Eclipse

Fondamenti di Informatica

Debug di un programma

Linguaggio C Debugging

PER UTILIZZARE LCC IN LAB

Unix e comandi di base

Fondamenti di Informatica T2 Modulo 2

Installazione. Eclipse. Workspace. Primo Avvio. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A. 2008/2009

Fondamenti Teorici. Antonio Pescapè e Marcello Esposito Parte Quarta v1.0

Errori di programmazione Università degli Studi di Milano

INTRODUZIONE A VISUAL STUDIO

Debugger. Marco Alberti Programmazione e Laboratorio, A.A

Fondamenti di Informatica AA 2016/2017

Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE

Anno Accademico Laboratorio di Tecnologie Web Uso di Firebug

Debugger. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Concetti Introduttivi

Linguaggi Compilati vs. Interpretati

COSTRUZIONE DI UN APPLICAZIONE

INTRO a MS Visual Studio 2008: LINEA di COMANDO

Fondamenti di informatica T-1 (A K) Esercitazione 6: Eclipse

Compilatori. g ++ prog.c. che crea il file eseguibile a.out. È utile conoscere alcune opzioni di g ++

Laboratorio di Python

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

LabView Parte 1 IL LABVIEW LEZ_1. Corso di. Misure per la Automazione e la Qualità (Studenti Ingegneria Elettrica III anno Nuovo Ordinamento )

Fondamenti di Informatica II 6. Esercitazioni Laboratorio 1

Fondamenti di Informatica T-1 CdS Ingegneria Informatica. Introduzione agli ambienti di sviluppo MS Visual Studio 2005/2008/2010 CodeLite 6.1.

L IDE NETBEANS. (slide: A. Baratè) Programmazione per la Musica Adriano Baratè

COSTRUZIONE DI UN APPLICAZIONE

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Errori di programmazione

Programmazione Procedurale in Linguaggio C++

Primo programma in C

Fondamenti di Informatica 9. Esercitazione in linguaggio C

Programmazione con Java

Un semplice programma L ambiente di sviluppo Dev-C++ Codifica del programma Compilazione e correzione errori Esecuzione e verifica

NOTE SULL USO DI ECLIPSE per la compilazione di programmi c

Guida introduttiva su Eclipse. Ing. Marco Dell'Unto

Lab 01 Introduzione a Codelite

IL COSTRUTTO SEQUENZA

Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment. Codice corso: 21012

Programmazione Procedurale in Linguaggio C++

Fondamenti di Informatica Ing. Biomedica

Cenni sul preprocessore e il suo utilizzo

Prof. Pagani Corrado INGEGNERIA DEL SOFTWARE

La scrittura di un programma Modellizzazione del programma Scrittura del codice Esercizi. Sperimentazioni I. Alberto Garfagnini, Marco Mazzocco

Lab 01 Introduzione a Codelite

Laboratorio di informatica Ingegneria meccanica

Iniziare a programmare in C++

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA

Programmazione Orientata agli Oggetti in Linguaggio Java

Corso di Laurea in Matematica. Seminario C/C++ Lorenzo Dusty Costa. Università degli Studi di Milano Dipartimento di Matematica

La scrittura di un programma Modellizzazione del programma Scrittura del codice Esercizi. Sperimentazioni I. Alberto Garfagnini, Marco Mazzocco

Le fasi della programmazione

Programmazione Procedurale in Linguaggio C++

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Introduzione. Informatica B. Daniele Loiacono

Informatica (A-K) 9. Esercitazione in linguaggio C

Sviluppo dei Programmi

Linguaggi di Programmazione

Linguaggi di Programmazione

Lezione n. 2i Informatica e tecnologia informatica Sistema di elaborazione Algoritmo Linguaggi di programmazione Realizzazione di un programma

Linguaggi di Programmazione e Paradigmi. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Programmazione C Massimo Callisto De Donato

Linguaggi di programmazione

Fondamenti VBA. Che cos è VBA

Fondamenti di Informatica. Ingegneria elettronica

Tutorial su Codelite. Luca Ceriani 2011 Federico Cerutti

Calcolo numerico e programmazione Introduzione a Scilab (3)

Corso di Linguaggi di Programmazione + Laboratorio

Elementi di programmazione

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Modularizzazione del software

Introduzione a Visual Studio 2005

Introduzione a Visual Studio Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Algoritmi e diagrammi di flusso versione biennio

Ambienti di Sviluppo. Linguaggi compilati

Corso Programmazione

Introduzione al C. Unità 10 Preprocessore. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 01. Introduzione a Codelite. Lab01 1

NetBeans. Dott. Ing. Rossella Rubino A.A. 2007/2008 Laboratorio II CdL: Operatore Informatico Giuridico

Transcript:

Prof. Pagani Corrado IL DEBUGDEL SOFTWARE

INTRODUZIONE Di solito i programmi non funzionano Un programma funziona quando in ogni condizione restituisce il valore atteso o gestisce l errore di inserimento dati dell utente fornendo l opportuno messaggio di errore in output Esempi Un programma che va in ciclo non funziona Un programma che si pianta se l utente inserisce valori sbagliati non funziona Un programma che ogni tanto si pianta non funziona

TIPOLOGIE DI ERRORI Errori di sintassisi commettono nella fase di scrittura delprogrammanellinguaggioscelto. Gli errori di sintassi impediscono la compilazione del programma da parte delcompilatoreche quindi tipicamente segnalerà la presenza dell'errore. Errori di logica(o semantica) si commettono nella fase di progettazione dell'algoritmo: possono essere causati da una mancata comprensione delproblema. Questi errori conducono tipicamente alla progettazione di un algoritmo che non fornisce l'output richiesto nell'ambito di una o più istanze del problema da risolvere. Sono difficili da individuare e spesso si deve ricorrere al debugging. Errori di runtimepossono verificarsi nella fase diesecuzionedel programma, anche se l'algoritmo è corretto e il codice viene compilato correttamente. Spesso sono relativi all'utilizzo errato dellamemoriada parte deipuntatorio nell elaborazione di dati che portano ad operazioni non eseguibili (ad esempio divisioni per 0).

TEST E DEBUG Ildebugging(o semplicementedebug), ininformatica, indica l'attività che consiste nell'individuazione da parte delprogrammatoredella porzione disoftwareaffetta da errore (bug) rilevata neisoftwarea seguito dell'utilizzo del programma. L'attività di debugè una delle operazioni più importanti per la messa a punto di unprogramma, spesso estremamente difficile per la complessità dei software oggi in uso e delicata per il pericolo di introdurre nuovi errori (effetti collaterali) o comportamenti difformi da quelli desiderati nel tentativo di correggere quelli per cui si è svolta l'attività di debug. Tipicamente permette di: Procedere passo passo o fino al successivo breackpoint Monitorare il valore delle variabili Assegnare valore manualmente alle valibili Fondamentale per individuare gli errori LOGICI e di RUNTIME

DEBUGGING A MANO Si può effettuare senza l ausilio dell ambiente di sviluppo Si inseriscono delle stampe ausiliarie per capire il flusso dell'esecuzione gli stati intermedi e i valori delle varibili Non richiede supporto di toolsparticolari Richiede attenzione a non introdurre ulteriori errori Un po' artigianale Poco efficiente

TOOLS DI DEBUG DEGLI AMBIENTI DI SVILUPPO Richiede l'uso di tooldell'ambiente di sviluppo o installazione di plug in esterni Consente di verificare il flusso dell'esecuzione: Tracing breakpoints gli stati intermedi Espressioni custom di controllo Strumento Molto potente Ad esempio ambienti di sviluppo come Eclipse, Code::Blockse VisualStudio forniscono un buon supporto

DEBUGCON ECLIPSE(JAVA) Lanciate il programma con Debugdal menu Run si passaalla prospettiva Debug Inserite almeno un breakpoint(doppio click a fianco della numerazione di riga) da cui far iniziare l analisi del codice Esecuzione del codice ResumeF8 StepIntoF5 quando incontra una chiamata a funzione entra nel codice sorgente della funzione chiamata StepOverF6 quando incontra una chiamata a funzione NON entra nel codice sorgente della funzione chiamata si fermerà ugualmente se incontra un breakpoint Tracing Nella scheda Variablespotete vedere i valori delle variabili Nella scheda breakpointspotete osservare tutti i punti di interruzione definiti Nella scheda Expressions(Windows Show view) potete digitare le espressioni custom e verificare il valore di ritorno

DEBUG CON ECLIPSE(JAVA) - CONFIGURAZIONE Siccome non vogliamo entrare nell esecuzione del codice delle chiamatealle librerie di sistema le filtriamo: Windows PreferencesJava DebugStep Filtering Seleziono Use Step Filters Select All

DEBUGCON VISUALSTUDIO (C#) Lanciate il programma con Debugdal menu Runsi passa alla prospettiva Debug Inserite almeno un breakpoint(click a fianco della numerazione di riga) da cui far iniziare l analisi del codice Esecuzione del codice ResumeF5 StepIntoF11 quando incontra una chiamata a funzione entra nel codice sorgente della funzione chiamata StepOverF10 quando incontra una chiamata a funzione NON entra nel codice sorgente della funzione chiamata si fermerà ugualmente se incontra un breakpoint Tracing Nella scheda Watch(Espressione di controllo) potete vedere i valori delle variabili

DEBUGCON VISUALSTUDIO (C#) Punto di interruzione Prossima riga in esecuzione Verifico i valori attualmente memorizzati nella variabile mylista