Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio11:faq

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
informatica:sol:laboratorio11:faq [09/01/2011 alle 15:23 (14 anni fa)] – creata Susanna Pelagattiinformatica:sol:laboratorio11:faq [22/09/2011 alle 10:41 (14 anni fa)] (versione attuale) – [FRAM 3: BUG in testparse] Susanna Pelagatti
Linea 2: Linea 2:
 Ossia //Frequently Asked Questions//. Ossia //Frequently Asked Questions//.
  
 +===== FRAM 3: BUG in testparse =====
 +Nel file testparse e' presente una scorretta temporizzazione fra le attivazioni dei client ed i comandi successivi (es kill) che lavorano sul client stesso. Il problema si deve fissare modificando testparse e introducendo delle sleep fra l'attivazione ed i comandi successivi in modo che quest'ultimi trovino il client sicuramente attivo.
 +Ad esempio:
 +<code>
 +# seconda invocazione pippo (password errata)
 +./pippoclientw.sh &
  
 +# uccido il client (non deve essere attivo)
 +if  killall -w pippoclientw.sh; killall -w docars ; then
 +    echo Error 1 1>&2
 +    .......
 +</code>
 +
 +<code>
 +# seconda invocazione pippo (password errata)
 +./pippoclientw.sh &
 +
 +sleep 1        # < ------ fix
 +
 +# uccido il client (non deve essere attivo)
 +if  killall -w pippoclientw.sh; killall -w docars ; then
 +    echo Error 1 1>&2
 +    ......
 +</code>
 +
 +
 +===== FRAM 1: Il grafo e' ORIENTATO =====
 +Nel file ''dgraph.h'' del tar in linea e' presente un commento errato che parla di grafi non-orientati: ignoratelo.
 +
 +===== FRAM 1: Errore nella specifica di new_graph(): errno deve essere settato a EINVAL in caso di parametri errati =====
 +Nel file ''dgraph.h'' del tar in linea si richiede di settare ''errno'' ad ''EINTR'' in caso di parametri errati, il settaggio corretto e' ''EINVAL'', la specifica corretta segue:
 +<code c>
 +/** crea un grafo 
 +    \param n numero dei nodi del grafo
 +    \param lbl array di etichette de nodi formato:
 +    static const char* citta[] = {
 +        "PISA",
 +        "LUCCA",
 +        "SIENA",
 +        "LIVORNO",
 +        NULL,
 +       };
 +
 +    Attenzione: le citta possono contenere solo caratteri alfanumerici e lo spazio ' '
 +
 +    \retval p puntatore al nuovo grafo (se tutto e' andato bene)
 +    \retval NULL se si e' verificato un errore (setta errno)
 +    (errno == EINVAL se i parametri non sono validi es lbl a NULL)
 +    (errno == ENOMEM se l'allocazione e' fallita)
 +*/
 +graph_t * new_graph (unsigned int n, char **lbl);
 +</code>
 +
 +
 +
 +
 +
 +
 +===== FRAM 1: A cosa serve la macro ''UNDEF''? =====
 +La macro
 +<code>
 +#define UNDEF ((unsigned int) -1)
 +</code>
 +serve a segnalare l'assenza di predecessore nell'array di precedenze utilizzato dall'algoritmo di calcolo dello Shortest Path.
  
 ===== E' possibile accedere al numero di linea in C ? ===== ===== E' possibile accedere al numero di linea in C ? =====
Linea 9: Linea 72:
 __LINE__ __LINE__
 </code> </code>
- 
- 
 ===== FRAM3: e' possibile modificare i file .h del primo frammento ? ===== ===== FRAM3: e' possibile modificare i file .h del primo frammento ? =====
 Si, e' possibile aggiungere campi alle strutture e prototipi nei file .h del primo frammento estendendo la libreria a patto che continuino a funzionare i test del primo frammento. Si, e' possibile aggiungere campi alle strutture e prototipi nei file .h del primo frammento estendendo la libreria a patto che continuino a funzionare i test del primo frammento.
Linea 18: Linea 79:
  
  
-===== FRAM3: errore nella specifica in ''comsock.h'' ===== 
-Nella specifica della funzione openConnection nel file comsock.h e' richiesto che la funzione ritorni 0 se la connessione ha avuto successo. Questo e' ovviamente sbagliato perche' in caso di successo deve tornare il file descriptor della socket connessa. La specifica corretta e' la seguente: 
-<code c> 
-/** crea una connessione all socket del server. In caso di errore funzione tenta NTRIALCONN volte la connessione (a distanza di 1 secondo l'una dall'altra) prima di ritornare errore. 
-   \param  path  nome del socket su cui il server accetta le connessioni 
-    
-   \return fd il file descriptor della connessione 
-             se la connessione ha successo 
-   \retval SNAMETOOLONG se il nome del socket eccede UNIX_PATH_MAX 
-   \retval -1 negli altri casi di errore (sets errno) 
- * 
-  in caso di errore ripristina la situazione inziale: rimuove eventuali socket create e chiude eventuali file descriptor rimasti aperti 
- */ 
-int openConnection(char* path); 
-</code> 
  
-===== FRAM1: Come deve essere inizializzata la hash table ? ===== 
-In ''new_hashTable()'' non e' necessario allocare tutte le liste di trabocco. La soluzione piu' ragionevole e' inizializzare la tabella a NULL ed allocare la lista quando serve durante l'inserimento di un nuovo elemento. Questo velocizza la creazione della tabella, suddivide l'overhead della creazione delle liste e risparmia memoria se non tutte le liste sono necessarie. 
  
-===== FRAM1: Devo invocare perror() dentro le funzioni di genList e genHash ? =====+===== FRAM1: Devo invocare perror() dentro le funzioni di libreria ? =====
 No, seguendo la convenzione delle funzioni di libreria C gli errori devono essere riportati con un opportuno codice di ritorno ed eventualmente settando ''errno''. Sara' chi invoca la funzione che invochera` anche ''perror()'' se lo ritiene opportuno. No, seguendo la convenzione delle funzioni di libreria C gli errori devono essere riportati con un opportuno codice di ritorno ed eventualmente settando ''errno''. Sara' chi invoca la funzione che invochera` anche ''perror()'' se lo ritiene opportuno.
  
Linea 58: Linea 102:
 (vedete anche man bashdb e l'help che ottenete digitando "h" al suo prompt). (vedete anche man bashdb e l'help che ottenete digitando "h" al suo prompt).
  
-===== Debuggare programmi con piu` processi ===== +===== Debuggare programmi con piu` processi/thread ===== 
-E` possibile usare GDB per debuggare programmi multiprocesso / multithread come indicato nella documentazione [[http://sourceware.org/gdb/current/onlinedocs/gdb_5.html#SEC27|qui]] e +E` possibile usare GDB per debuggare programmi multiprocesso / multithread come indicato nella documentazione [[http://sourceware.org/gdb/current/onlinedocs/gdb/Threads.html#Threads|qui]] e [[http://sourceware.org/gdb/current/onlinedocs/gdb/Attach.html#Attach|qui]]. 
-[[http://sourceware.org/gdb/current/onlinedocs/gdb_5.html#SEC28|qui]]. E` possibile usare i comandi indicati anche in DDD, scrivendoli manualmente nel prompt del GDB in basso nella schermata.+ E` possibile usare i comandi indicati anche in DDD, scrivendoli manualmente nel prompt del GDB in basso nella schermata.
  
 ===== Uso di GDB da emacs ===== ===== Uso di GDB da emacs =====
informatica/sol/laboratorio11/faq.1294586619.txt.gz · Ultima modifica: 09/01/2011 alle 15:23 (14 anni fa) da Susanna Pelagatti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki