strace peut être employé pour tracer un processus à lancer, dont on donne la ligne de commande (la trace de la figure 1 a été obtenue à l'aide de la commande strace date) ou bien un processus déjà existant (sous la forme strace -p <pid>). Chaque appel système possède une page de man du même nom, de sorte qu'il est facile de se référer à la documentation d'un appel système qu'on ne connaît pas. strace possède d'autres options intéressantes (consulter la page de man), en particulier on peut filtrer les appels système qu'il affiche : ainsi, strace -e trace=open depmod -a donne la liste de tous les fichiers qu'ouvre la commande depmod -a ! (cette commande sert à mettre à jour les dépendances entre les modules du noyau).execve("/bin/date", ["date"], [/* 34 vars */]) = 0
brk(0) = 0x804e6b0
[...]
open("/etc/ld.so.cache", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=17635, ...}) = 0
old_mmap(NULL, 17635, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40015000
close(4) = 0
open("/lib/libc.so.6", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0755, st_size=4118299, ...}) = 0
read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\250\202"..., 4096) = 4096
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4001a000
[...]
close(4) = 0
[...]
personality(PER_LINUX) = 0
getpid() = 6595
brk(0) = 0x804e6b0
brk(0x804e850) = 0x804e850
brk(0x804f000) = 0x804f000
open("/usr/share/locale/locale.alias", O_RDONLY) = 4
[...]
close(4) = 0
[...]
open("/usr/share/locale/fr_FR/LC_TIME", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=488, ...}) = 0
old_mmap(NULL, 488, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40017000
close(4) = 0
[...]
time([958575003]) = 958575003
open("/etc/localtime", O_RDONLY) = 4
read(4, "TZif\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\f\0\0\0\f\0"..., 44) = 44
[...]
close(4) = 0
[...]
write(1, "mer mai 17 16:50:03 CEST 2000\n", 30) = 30
close(1) = 0
munmap(0x40019000, 4096) = 0
_exit(0) = ?
Table 1 : exemple de trace des appels système pour la commande date. La trace a été considérablement abrégée, comme le signalent les points de suspension.
Ce document a été traduit de LATEX par HEVEA.