Strace

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

Strace
strace
software
Logo
Logo
GenereDebugger
SviluppatorePaul Kranenburg, Dmitry Levin
Ultima versione7.1 (15 giugno 2026)
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

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

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

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

Note

  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

Collegamenti esterni

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.