strace

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
strace
software
Logo
Logo
GenereDebugger
SviluppatorePaul Kranenburg, Dmitry Levin
Ultima versione6.8 (20 marzo 2024)
Sistema operativoLinux
FreeBSD (non in lista)
LinguaggioC
LicenzaBSD
(licenza libera)
Sito webstrace.io/

strace è un'utility di debugging per Linux e altri sistemi Unix-like che esamina le chiamate di sistema usate da un programma e tutti i segnali che esso riceve, analogamente all'utility truss presente in altri sistemi Unix. Ciò è reso possibile da una funzionalità chiamata ptrace.

Cygwin fornisce un'utility simile.

Utilizzo[modifica | modifica wikitesto]

L'uso più comune è quello di far partire un programma usando strace, che stampa a video la lista delle chiamate di sistema fatte dal programma. Ciò è utile se il programma va frequentemente in crash, o non tiene il comportamento atteso; per esempio l'uso di strace può rivelare che il programma tenti di accedere ad un file che non esiste o è illeggibile.

In alternativa, si usa il flag -p per associare strace ad un processo già in esecuzione. Ciò è utile se un processo ha smesso di rispondere, e può rivelare, ad esempio, che il processo è bloccato in attesa di una connessione alla rete.

Siccome strace mostra soltanto i dettagli delle chiamate di sistema, non può essere utilizzato per individuare tutti i problemi che può rivelare un debugger come GNU Debugger (gdb). Però, esso è più facile da usare di un debugger, ed è uno strumento estremamente utile per gli amministratori di sistema.

Output di esempio[modifica | modifica wikitesto]

Segue un tipico esempio di output del comando strace:

open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl64(3, F_GETFD)                     = 0x1 (flags FD_CLOEXEC)
getdents64(3, /* 18 entries */, 4096)   = 496
getdents64(3, /* 0 entries */, 4096)    = 0
close(3)                                = 0
fstat64(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f2c000
write(1, "autofs\nbackups\ncache\nflexlm\ngames"..., 86autofsA

Il frammento sopra è solo una piccola parte dell'output di strace quando viene eseguito sul comando ls. Mostra che la directory di lavoro viene aperta e ne viene letto il contenuto. La lista di file risultante è scritta sullo standard output.

Altri strumenti[modifica | modifica wikitesto]

I diversi sistemi operativi offrono altri strumenti simili e talvolta più potenti, per esempio:

Note[modifica | modifica wikitesto]

  1. ^ (EN) dtruss(1m) OS X Manual Page, su developer.apple.com, 17 giugno 2005. URL consultato il 29 marzo 2013.
  2. ^ (EN) StraceNT - A System Call Tracer for Windows, su intellectualheaven.com. URL consultato il 29 marzo 2013 (archiviato dall'url originale l'11 maggio 2013).

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]