DEBUGGING DEI PROCESSI

Precedente
Programma
Seguente
Bastard Operator From Hell!
lsof | grep sshd
  Visualizza i file aperti da sshd. Notare che visualizza anche la porta su cui è in LISTENING.
strace -o debug.txt ssh
  Scrive su debug.txt l'output del tracing di ssh.
Molto utile perchè permette di interagire con lo STOUT del processo senza essere sommersi dai debug di strace.
strace -p 657
  Fa uno strace in tempo reale del processo che sta girando con il PID 657.
Linux et cetera...
Linux Solaris FreeBSD SGI HP-UX
strace truss ktrace par tusc
L'opera di debugging di un processo non è generalmente argomento da corso di amministrazione base, anche perchè spesso riguardano problemi sul lato applicativo che vanno affrontati direttamente dallo sviluppatore.
In ogni caso, nella vita di ogni sysadm capita sistematicamente che dei servizi non partano o dei programmi non facciano quello che dovrebbero fare (non inchiodarsi, innanzitutto), oppure, più subdolamente, hanno comportamenti erratici o problemi di prestazioni o di sopportazione di alti carichi.
Alcuni strumenti sono comunemente a disposizione del sistemista per diagnosticare simili problemi:
logs I log sono sempre la prima cosa da guardare. Eventualmente analizzare syslog.conf o le istruzioni e le configurazioni del singolo programma per capire dove vengono loggati i suoi messaggi.
debugging Quasi sempre è possibile lanciare un programma con diversi livelli di debug, aumentando la verbosità del debug (di solito registrato sul file di log) si aumenta la possibilità di capire cosa non funziona.
strace comando

Strace traccia le chiamate di sistema e i segnali del programma specificato mentre lo esegue. Ovviamente va utilizzato solo per fini diagnostici, rallentando particolarmente la velocità di esecuzione. Spesso non è nemmeno necessario capire l'output di strace, basta cercare righe dove si parla di errori e vengono indicati path o funzioni specifiche.
Spesso un programma non funziona perchè non trova certi file (librerie ecc) o non ha i permessi adeguati sugli stessi.

ldd comando Stampa l'elenco delle librerie condivise utilizzate dal comando specificato
lsof [opzioni] Elenca gli open file del sistema. Un open file può essere: un normale file, una directory, un file speciale a blocchi o caratteri, una librerira, una socket Internet, una socket Unix domain...
E' utile per vedere le risorse utilizzate da un programma.
WEB RESOURCES
http://www.liacs.nl/~wichert/strace/ Strace Homepage