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 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 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 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
Installare strace
Avviare un terminale e lanciare il programma che presenta malfunzionamenti sotto il controllo di Strace digitando:
strace-Ff-tt nome_programma <argomenti> 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.- Verrà così avviato il programma e saranno tutte le azioni necessarie per riprodurre il crash
- 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.
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.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.
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.