Depurar errors dels nostres programes amb strace

Reading time: 3 – 4 minutes

Per molt que defensem l’estabilitat dels nostres sistemes Linux, cal ser
sincers. A vegades tb hi ha un q altre programa q et dona pel _____. En poques
paraules estas a linia de comandes escrius el nom del programa i de cop aquest
ens torna la linia de comandes sense cap missatge ni res de res. O pels que
usen les X’s, executen una icona i aquesta no diu res de res….

Doncs bé per aquests casos i molts d’altres linux ens dona solucions
q sense ser programadors experts podem aportar solucions. Solucions que sovint,
per no dir, quasi sempre es poden dur a terme sense programar res.

A mi particularment aquesta setmana m’ha portat de cul el mozilla, no sabia
perquè executava el mozilla mail i aquest es posa a carregar i a llegir
i vinga a esperar i el procés sortia de la llista del scheduling i no es
carregava res 🙁

Així doncs em vaig posar al lio, com no, el primer comprobar que no hi
hagi cap dependencia del binari trencada. Com es fa això amb la comanda:
ldd!!! encara q no entengueu res no ús preocupeu si alg on funciona
ús en donareu compte 😉 perquè ús diria q hi ha alguna
dependencia no trobada q és el més important.

Si això esta correcte el següent podria ser fer un strace.
Bàsicament el q ens permet fer aquest programa és fer un
seguiment de les crides al sistema operatiu q esta fent el software q executem.
A mi la linia de comandes q m’agrada usar és:

strace -f -o nomfitxer.log programa

-f: si el programa llança fills en el seu procés
d’execusió els seguirem tots.

-o: desvia la sortida a un fitxer d registre q després examinarem

programa: l’executable dl programa q ens esta fallant.

Per entendre l’strace ja s’ha d saber una miqueta d programació i
estructura interna del sistema operatiu. Però tp gaire. Perquè el
90% dels errors q es donen normalment és per culpa d’algun fitxer q
s’intenta obrir i aquest no hi és o esta fallant. Per tant,
l’únic q haurem de mirar del sempre llarguissim fitxer d log,
seràn les linies q intentin obrir fitxers (open) i les ordres q intentin
llegir continguts d fitxers q s’han obert (read).

Si busquem tot això veurem que normalment hi ha retorns de funcions
erronis (-1) o senyals d’estat erronies del sistema operatiu contra els
processos en execusió (SIGV_TERM, SIGV_STOP, etc).

Bé amb això l’únic q he fet segurament és liar-vos
encara més i omplir-vos el cap d coses q potser ni ús sonen, o q
ja ni recordeu, d quan ús van ensenyar a la universitat. D totes formes
tranquils no ús vull deixar així, tot això era l’excusa
per passar-vos un mini-tutorial molt guapo q vaig trobar llegint les noticies
de sourceforge, de fet el tutorial para dels problemes d llibreries del kde
però ho podeu aplicar a quasevol programa de Linux:

Strace mini-tutorial

Últimas entradas

Archivo
Scroll to Top