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

  1. Installare strace

  2. 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.
  3. Verrà così avviato il programma e saranno tutte le azioni necessarie per riprodurre il crash
  4. 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.

  1. 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.
  2. 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.

  3. 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

LucaGambardella/Prove10 (l'ultima modifica è del 03/08/2011 18.02.15, fatta da LucaGambardella)