Strumenti Utente

Strumenti Sito


lcs:lcs07:esercitazioni:esercitazione3sc

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Prossima revisione
Revisione precedente
lcs:lcs07:esercitazioni:esercitazione3sc [26/02/2007 alle 15:22 (19 anni fa)] – creata Susanna Pelagattilcs:lcs07:esercitazioni:esercitazione3sc [19/03/2007 alle 08:53 (19 anni fa)] (versione attuale) Susanna Pelagatti
Linea 2: Linea 2:
 Questa esercitazione tratta le //system call// che operano su file. Questa esercitazione tratta le //system call// che operano su file.
  
-L'accesso ai file ed alle directory deve essere effettuato **esclusivamente** utilizzando le system call viste a lezione. La soluzione //deve// includere la gestione degli arrori con una delle tecniche discusse.+**Per gli esercizi 1, 2, 3, 4 DEVE essere prodotto un opportuno makefile con target per la creazione di oggetti ed eseguibili, e per l'esecuzione del test automatico del codice prodotto.** 
 + 
 +L'accesso ai file ed alle directory deve essere effettuato **esclusivamente** utilizzando le system call viste a lezione. La soluzione //deve// includere la gestione degli errori con una delle tecniche discusse. 
 + 
 +====== Esercizio -1: sul debugging ====== 
 +Usare un debugger a scelta per trovare cosa non va nei seguenti {{lcs:lcs07:esercitazioni:ese-debug.tar|programmi}} 
 +  - //ese-gdb1.c// e' una soluzione completa (non funzionante) all'esercizio pecolation (vedi [[esercitazione1]]) 
 +  - //ese-gdb2.c// e' una soluzione parziale (non funzionante) dello stesso esercizio. In particolare si affronta soltanto l'allocazione e l'inizializzazione della matrice
  
 ====== Esercizio 0: perror() ====== ====== Esercizio 0: perror() ======
Linea 19: Linea 26:
      Stampa il contenuto di un singolo file su stdout      Stampa il contenuto di un singolo file su stdout
 </code> </code>
 +
 +Utilizzare il comando ''strace'' (man strace) per eseguire ''mycat'' in modo da visualizzare ed intercettare tutte le system call invocate. 
  
 ====== Esercizio 2: mycat (2) ====== ====== Esercizio 2: mycat (2) ======
Linea 37: Linea 46:
 Inoltre si implementi l'opzione ''[-o fileout]'' che permette di specificare un file (''fileout'') di  Inoltre si implementi l'opzione ''[-o fileout]'' che permette di specificare un file (''fileout'') di 
 output diverso dallo standard output. \\ output diverso dallo standard output. \\
-NOTA: L'opzione ''-o'' puo' essere specificata in una posizione arbitraria della lista degli argomenti, per il parsing della linea di comando e' possibile utilizzare la funzione di libreria ''getopt'' (vedi man 3).+//NOTA: L'opzione ''-o'' puo' essere specificata in una posizione arbitraria della lista degli argomenti, per il parsing della linea di comando e' possibile utilizzare la funzione di libreria ''getopt'' (vedi man 3).//
  
 ====== Esercizio 3 : mystat ====== ====== Esercizio 3 : mystat ======
Linea 53: Linea 62:
 stampabile con la funzione di libreria ''ctime()'', in ''time.h'', usare ''getpwid()''  stampabile con la funzione di libreria ''ctime()'', in ''time.h'', usare ''getpwid()'' 
 e ''getgrgid()'' per convertire ''uid'' e ''gid'' nei nomi corrispondenti. e ''getgrgid()'' per convertire ''uid'' e ''gid'' nei nomi corrispondenti.
-\\ + 
-//Estensione//(compilazione separata e make)  +====== Esercizio 4 myfnd ====== 
-Suddividere il programma sviluppato su due file :  +Realizzare il comando ''myfnd'
-uno contenente un main minimale che chiama una funzione per stampare gli attributi definita nell'altro file. +<code> 
-Scrivere il relativo ''makefile''Usare ''objdump/readelf'' per esplorare le varie +myfnd dir namef 
-parti dei moduli oggetto generatiCosa contiene l'eseguibile?+</code> 
 +che cerca ricorsivamente il file ''namef'' nel sottoalbero radicato nella directory ''dir''Per ogni file ''namef'' trovato, stampa il path assoluto della directory in cui e' stato trovato e la data dell'ultima modifica. Ad esempio 
 +<code> 
 +bash:~$ myfnd . gigi 
 +/home/susanna/bin/gigi  2007-03-16 14:00 
 +/home/susanna/bin/xxx/gigi  2006-07-10 13:10 
 +bash:~$ 
 +</code> 
 + 
 +====== Esercizio 5: Test coverage ====== 
 +Utilizzare i tool //gcov// e/o //lcov// per effettuare una valutazione del test coverage dei programmi di test che avete sviluppato per la soluzione di uno degli esercizi precedentiIn altre parole, dovete stabilire quanta parte del codice che avete scritto viene effettivamente eseguita e quindi testata. 
 + 
 +Chi ha effettuato la consegna del primo frammento di progetto puoverificare il test coverage di stree-test.c scommentando la quarta linea del //Makefile//: 
 +<code> 
 +COVFLAGS=-fprofile-arcs -ftest-coverage 
 +</code> 
 +compilando con 
 +<code> 
 +bash:~$ make cleanall 
 +bash:~$ make stree 
 +</code> 
 +e poi eseguendo 
 +<code> 
 +bash:~$ ./stree 
 +bash:~$ gcov -f stree 
 +bash:~$ more stree.c.gcov 
 +</code> 
 +che rispettivamente, girano //stree// , estraggono le informazioni di coverage e le mostrano relativamente al file //stree.c//.
lcs/lcs07/esercitazioni/esercitazione3sc.1172503354.txt.gz · Ultima modifica: 27/06/2007 alle 12:16 (18 anni fa) (modifica esterna)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki