strace — narzędzie do analizy kodu badające interakcję programu z jądrem systemu operacyjnego. Śledzi wywołania systemowe oraz sygnały w procesie. Może też zliczać i mierzyć czas poszczególnych wywołań.
Polecenie strace można zastosować do śledzenia procesu na dwa sposoby: uruchamiając program pod kontrolą strace bądź podłączając się do już działającego procesu o zadanym identyfikatorze.
W systemie Solaris opisana funkcjonalność jest dostarczana przez polecenie trusstruss(1) - trace system calls and signals (man pages section 1: User Commands), a strace służy do innych celówstrace – print STREAMS trace message (man pages section 1M: System Administration Commands).
Przykład Przykład wykonania strace dla /bin/true w systemie Linux.
$ strace /bin/true execve("/bin/true", ["/bin/true"], [/* 73 vars */]) = 0 uname({sys="Linux", node="abc.xyz.pl", ...}) = 0 brk(0) = 0x804c000 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40000000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=63878, ...}) = 0 old_mmap(NULL, 63878, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40001000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1