= Diagnostica Software = In questa guida verranno forniti gli strumenti per risolvere probremi comuni dovuti al mancato avvio o crash di programmi. = Mancato avvio dei programmi = Se un programma non si avvia può essere utile lanciarlo da terminale per ottenere informazioni utili alla risoluzione del problema. Ad esempio se non si avvia '''evolution''' digitare in un terminale: {{{ evolution }}} Il mancato avvio dei programmi può essere ricondotto a diverse cause. Le più comuni sono: == Dipendenze del programma non soddisfatte o file mancanti == Se il programma è stato installato da gestore pacchetti digitare in un terminale: {{{ sudo apt-get -f install }}} In alternativa è possibile installare il pacchetto auto-apt e digitare il comando: {{{ sudo auto-apt updatedb }}} per aggiornare il database dei file di auto-apt. I seguito digitare: {{{ sudo auto-apt run comando }}} Sostituire a comando il nome del programma che si desidera eseguire. Se il programma proverà ad accedere a dei file di pacchetti non installati, auto-apt provvderà a richiamare apt-get e ad installare i pacchetti mancanti. In alternativa, installare il pacchetto apt-file. Aggiornare il database di apt-file: {{{ sudo auto-apt update }}} Per individuare il pacchetto che la contiene digitare: {{{ sudo apt-file search file_da_cercare }}} Sulla sinistra dell'output del terminale, verrà mostrato il nome del pacchetto contenente il file. Individuato il pacchetto in questione, installare il pacchetto. Come predefinito le librerie di un programma vengono ricercate nelle cartelle `/lib` o `/usr/lib` Se utilizziamo un programma che fa uso di librerie non contenute in queste cartelle, modificare con un editor di testo il file /etc/ld.so.conf aggiungendo in questo il il percorso della nuova cartella in cui il programma deve ricercare le librerie condivise. Salvare le modifiche al file e dare il comando: {{{ sudo ldconfig}}} == Accesso a file per i quali non si hanno i dovuti permessi == Consultare la guida [[AmministrazioneSistema/PermessiFile|Permessi File]] == Errori nei file di configurazione dei programmi == Per rimediare a questo errore entrare nella propria '''Home''', visualizzare i file nascosti e cancelare la cartella contenente i file di configurazione del programma. Ad esempio per '''Evolution''' la cartella contente i file di configurazione è `.evolution` Dopo aver avviato il programma questa cartella verrà rigenerata con le impostazioni corrette. == Limiti nell'accesso alle risorse == = Crash = I crash di un programma sono dovuti essenzialmente a bug. Per risolvere i problemi legati ad un crash a volte basta semplicemente aggiornare il suddetto programma. E' possibile ricercare le soluzioni ad un possibile bug utilizzando il [[https://bugs.launchpad.net/|Bug tracking di Launchpad]]. Vi sono inoltre strumenti che permettono di visualizzare le cause di un crash. Uno di questi è il comando: {{{ watch comando}}} watch avvia un comando o programma mostrandone output ed errori ( il primo in modalità schermo intero) ogni due secondi . Questo è modificabile con l'opzione -n. Oppure si può utilizzare [[Programmazione/GnuDebugger|GNU Debugger]] = Malfunzionamenti = == Strace == A volte, un programma inizia comportarsi stranamente. Dà un output non corretto sul suo input, non viene stampato nulla, o addirittura si blocca. Sotto un sistema basato su Linux, ogni processo userspace deve interagire con l'ambiente attraverso il kernel. E lo fa invocando chiamate di sistema. == Creazione di output strace == 0. Installare [[apt://strace | strace]] 0. Avviare un terminale e lanciare il programma che presenta malfunzionamenti sotto il controllo di '''Strace''' digitando: {{{ strace-Ff-tt nome_programma 2> & 1 | tee strace-nome_programma log }}} dove nome_programma va sostituito il nome del programma da analizzare, strace-nome_programma sarà il file contenente l'output di diagnostica generato nella cartella home. 0. Verrà così avviato il programma e saranno tutte le azioni necessarie per riprodurre il crash 0. Allegare l'output completo di strace, contenuto in strace-nome_programma. Log, Nel vostro bug report. == Usare Strace con programmi già in esecuzione == Si consiglia di eseguire ''Strace'' su un programma già in esecuzione. Questo potrebbe essere dovuto al fatto che strace log faccia troppe prove prima di poter riprodurre un crash. Oppure, potrebbe essere perché si sta cercando di scoprire ciò che un programma sta facendo in un ciclo infinito. 0. Avviare un terminale ed individuare l'ID di un programma digitando: {{{ pidof nome_programma }}} dove nome_programma va sostituito il nome del programma di cui si vuole conoscere l'ID. 0. Avviare strace con l'ID del programma:{{{ strace-Ff-tt-p PID 2> & 1 | tee strace-nome_programma log }}} sostituendo sostituire a PID l'ID del processo. Nella home verrà creato il file di log `strace-nome_programma`. 0. Allegare l'output completo di '''Strace''', contenuto in strace-nome_programma. Log, Nel proprio bug report. ||<> ||''Se durante la creazione del file di log si generasse un ciclo infinito, interrompere l'esecuzione della diagnostica con la combinazione di tasti Control C.'' || = Sprechi di risorse = Un programma affetto da bug potrebbe portare crash di sistema o rallentamenti. Per individuare un comando che spreca risorse utilizzare un taskmanager, individuare il processo e terminare tale processo. # Aggiungere utilizzo di top e come killare un processo. Avviare il programma con gli strumenti descritti sopra. Ottenute le informazioni dell'output sarà possibile fare una ricerca su internet per trovare le possibili soluzioni oppure si potrà copiare l'output e incollarlo in una discussione del forum per dare informazioni precise sul crash ed ottenere un adeguato supporto. ---- CategoryHomepage