sintesi della presentazione dell`ambiente di
Transcript
sintesi della presentazione dell`ambiente di
Tutorial su Codelite Luca Ceriani <[email protected]> © 2011 Federico Cerutti <[email protected]> Sommario • Creare un nuovo workspace • Creare un primo progetto all’interno di un workspace – Scrittura del programma – Esecuzione – Esecuzione controllata tramite il debugger • Scrivere un secondo programma all’interno dello stesso workspace • Strumenti di Codelite per evidenziare errori di programmazione CREARE UN NUOVO WORKSPACE Scrivere il nome del Workspace Selezionare la directory per il workspace CREARE UN PRIMO PROGETTO ALL’INTERNO DI UN WORKSPACE Useremo solamente la categoria “Console”… …e la tipologia “Simple executable (gcc)” Scriviamo il nome del nuovo progetto e clicchiamo su OK All’interno dell’area di sinistra di Codelite, chiamata Workspace View, compare, un albero la cui radice è il nome del workspace che abbiamo creato, e sotto di esso compare il primo progetto che abbiamo creato Cliccando sul simbolo a sinistra di “NumeriBinari” si apre l’albero dei file associati a questo progetto, quindi vedremo la directory “src” e se apriamo anche questa directory compare il file “main.c”, che è il file che conterrà il nostro codice. Con il doppio click su “main.c” compare nell’area centrale di Codelite un editor di testo con il contenuto di “main.c” Selezioniamo il codice che viene autogenerato da Codelite e cancelliamolo A questo punto scriviamo il nostro codice (ricordarsi di salvare il codice con CTRL+s o tramite il menù, selezionando File e poi Save File) Compilazione ed esecuzione Una volta terminato di scrivere il codice, possiamo compilarlo tramite l’opzione “Build Project” evidenziata in figura Nell’area in basso, nel tab “Build” compaiono le informazioni sulla compilazione. Attenzione: non si potrà eseguire alcun programma fino a quando in questo tab non comparirà la scritta “0 errors” come evidenziato. Se la compilazione è andata a buon fine, possiamo eseguire il programma con il comando “Run” come evidenziato in figura Comparirà una finestra del terminale del sistema operativo che stiamo eseguendo (in questo esempio Windows XP) in cui viene eseguito il nostro programma Compilazione ed esecuzione controllata tramite il debugger Impostiamo un breakpoint, ovvero un punto in cui il programma verrà sospeso nel momento in cui lo eseguiamo tramite il debugger. Per fare questo, clicchiamo accanto (alla destra) al numero della riga in corrispondenza della quale vogliamo che l’esecuzione del programma si sospenda (nell’esempio la riga 13). Lanciamo l’esecuzione controllata tramite il comando “Start/Continue Debugger” Codelite ci chiede se vogliamo ricompilare il progetto prima di eseguirlo mediante il debugger. Rispondiamo SEMPRE di sì 3 Compariranno/saranno visibili: 1. L’area delle informazioni di compilazione (basso a sinistra) 2. L’area di informazioni del debugger (basso a destra) 3. La finestra del terminale all’interno della quale vedremo gli output del nostro programma e potremo inserire gli input 1 2 Ad esempio, dopo aver inserito il numero richiesto (in questo caso inseriamo 32), l’esecuzione del programma si sospenderà al breackpoint che abbiamo ipostato, e nel tab “Locals” dell’area di informazione del debugger vedremo le variabili locali e i relativi assegnamenti. La freccia verde indica la riga del programma che il debugger sta per eseguire. In questo caso è sovrapposta al bottone rosso che rappresenta il breackpoint perché l’esecuzione è in questo momento sospesa Se selezioniamo il tab “Memory” nell’area di informazioni del debugger, possiamo richiedere di visualizzare specifiche aree di memoria, richiedendo l’accesso con il simbolo “&” seguito dal nome della variabile. Il debugger ci mostrerà i primi 32 byte a partire dalla posizione che gli abbiamo richiesto (opzione modificabile cambiando il parametro “Size”). Dobbiamo sapere noi quanti sono i byte che ci interessano effettivamente. In questo caso abbiamo richiesto l’area di memoria della variabile “un_numero_intero” che è un int, e quindi utilizza 32 bit (4 byte). N.B. Il calcolatore da cui sono state tratte queste immagini lavora in Little-Endian. N.B. la notazione “0xNM” equivale a (NM)h Area di memoria della variabile un_numero_intero, ovvero scriviamo “&un_numero_intero” Il valore della variabile “un_numero_intero” esattamante come viene rappresentata nel calcolatore (in questo caso un int quindi 4 byte, su un’architettura Little-Endian) Il numero di byte che chiediamo di visualizzare al debugger (di default 32). Se in questa posizione avessimo specificato “4”, avremmo visto solamente i primi 4 byte, e quindi solo ed unicamente l’area di memoria che ci interessava In questo caso, richiediamo i primi 32 byte dell’area di memoria a partire da dove è stata salvata la variabile un_altro_numero_intero L’area di controllo del debugger è in alto a sinistra. In particolare, se premiamo sul pulsante disegnato come un quadrato (evidenziato in figura) possiamo terminare l’esecuzione del nostro programma in esecuzione controllata all’interno del debugger SCRIVERE UN SECONDO PROGRAMMA ALL’INTERNO DELLO STESSO WORKSPACE Ricordarsi sempre!!!! Un programma, un progetto Se vogliamo scrivere un nuovo programma, cominciamo sempre creando un nuovo progetto. Quindi, NON inserire nuovi file che rappresentano altri programmi all’interno di un progetto già esistente!!! Se, come in questo caso, è rimasto aperto il file “main.c” del progetto precedente (NumeriBinari), chiudiamolo cliccando sulla X che compare a destra del nome del file nel tab relativo (come evidenziato in figura) Apriamo l’albero del nuovo progetto… …doppio click sul file “main.c” del nuovo progetto… …al solito comparirà il codice preimpostato da Codelite… …cancelliamo il codice preimpostato da Codelite… …scriviamo il nostro codice. Prima di compilare il nostro nuovo codice, dobbiamo cambiare il progetto “active”, ovvero il progetto sul quale Codelite eseguirà le operazioni di “Build Project” e di “Run” che gli andremo a richiedere. Quindi clicchiamo sull’icona evidenziata in figura… …comparirà la lista dei progetti presenti in questo workspace. Selezioniamo il progetto che vogliamo compilare/eseguire… …nell’albero del workspace, il progetto che abbiamo selezionato come “Active” cambierà il suo font in grassetto. Quindi, se stiamo scrivendo codice e non ci ricordiamo quale sia il progetto attivo, basta guardare a sinistra: il progetto con il nome in grassetto è quello impostato come “Active”. A questo punto possiamo operare come visto in precedenza, quindi possiamo compilare il progetto… …eseguire il nuovo progetto… …al solito comparirà il terminale del sistema operativo che stiamo utilizzando, e potremo usare questa finestra per fornire gli input e visualizzare gli output… …possiamo impostare breackpoint per l’esecuzione controllata mediante debugger cliccando a destra del numero di riga in corrispondenza della quale vogliamo sospendere l’esecuzione del nostro programma… …lanciare l’esecuzione del nostro programma nell’ambiente controllato del debugger… …accettare che Codelite prima di eseguire il programma attraverso il debugger lo ricompili… …operare come meglio crediamo nell’ambiente del debugger… …operare come meglio crediamo nell’ambiente del debugger… …e alla fine terminare l’esecuzione del nostro programma nell’ambiente controllato del debugger. STRUMENTI DI CODELITE PER EVIDENZIARE ERRORI DI PROGRAMMAZIONE Creiamo un nuovo programma… …scriviamo Come possiamo il nostro codice: vedere,come questo possiamo programma vedere,contiene ci sono 4 errori nel codice: 1. Manca il “;” che termina la riga 3 2. Richiamiamo la printf su una variabile che non esiste 3. Richiamiamo la funzione printf senza aver importato la libreria <stdio.h> 4. Scriviamo “return = 2” invece che “return 2;” Impostiamo il nostro nuovo codice come Active per poi vedere quale sia il risultato della compilazione. Nell’area delle informazioni di compilazione vengono evidenziati gli (eventuali) errori di compilazione. Inoltre Codelite presenta delle frecce rosse in corrispondenza delle righe che contengono gli errori rivelati dal compilatore. N.B. Il compilatore potrebbe anche non evidenziare tutti gli errori commessi Se, nonostante gli errori di compilazione e quindi prima di correggerli proviamo ad eseguire il programma ad esempio attraverso il debugger… …e diciamo a codelite di non ricompilare il progetto (contrariamente a quanto facciamo di solito, quindi commettiamo anche questo errore)… …comparirà questa finestra di errore, che significa che il debugger ha provato ad eseguire un file eseguibile che non esiste ancora. Infatti, fino a quando la compilazione non andrà a buon fine, non verrà creato il nostro programma eseguibile PRIMA DI ESEGUIRE UN PROGRAMMA, SIA ATTRAVERSO IL COMANDO DI RUN, SIA ATTRAVERSO L’ESECUZIONE CONTROLLATA MEDIANTE IL DEBUGGER, DOBBIAMO RISOLVERE TUTTI GLI ERRORI DI COMPILAZIONE!!!! Processo di correzione degli errori Compilazione Correzione del primo errore Presenza di errori Iniziamo a correggere gli errori sempre dal primo evidenziato, ricompiliamo e vediamo che effetti ci sono. La prima linea di errore ci informa che manca un “;” prima del printf, quindi provvediamo ad inserire questo “;”. Ricompiliamo, e il compilatore ci informa che si è accorto di 4 errori, il primo dei quali riguarda il fatto che “numer” (parametro della funzione printf) non è mai stato dichiarato come variabile. Correggiamo quindi l’errore scrivendo il nome corretto della variabile (ovvero “numero”) Ricompiliamo e il compilatore presenta un errore ed un warning. I warning sono errori che di cui il compilatore ci avvisa e che ci informa che potrebbe riuscire a correggere autonomamente, ma senza alcuna garanzia. Quindi non devono essere ignorati. In questo caso, il compilatore ci informa che non abbiamo mai dichiarato la funzione “printf” perché in precedenza non avevamo incluso la libreria <stdio.h>. Quindi correggiamo questo warning scrivendo “#include <stdio.h>” in principio al file sorgente Ricompiliamo e il compilatore presenta un ultimo errore, dovuto al fatto che la riga 9 è sintatticamente sbagliata Correggiamo l’errore… …ricompiliamo, e a questo punto nell’area di informazioni del compilatore compare la scritta: “0 errors, 0 warnings”, che significa che il codice che abbiamo scritto è sintatticamente corretto (nessuna garanzia sulla semantica) e quindi possiamo eseguirlo attraverso il comando “Run” o mediante l’esecuzione controllata del debugger