Overzicht
strace traceert en toont in realtime alle systeemoproepen en signaalgebeurtenissen van een proces, hetzij door een specifiek commando uit te voeren of door verbinding te maken met een reeds draaiend proces. Dit is essentieel voor het begrijpen van de low-level gedragingen van een programma, zoals bestands-I/O, netwerkcommunicatie en geheugenbeheer.
Belangrijkste functies
- Tracering van systeemoproepen en signalen van processen
- Weergave van argumenten, retourwaarden en foutcodes voor elke oproep
- Verbinding maken met draaiende processen om te traceren
- Gelijktijdige tracering van kindprocessen
- Filteren van specifieke systeemoproepen of signalen
Belangrijkste opties
strace biedt diverse opties om de traceermethode en uitvoerformaat nauwkeurig te regelen.
Standaard traceeropties
Uitvoerregeling
Filteren
Gegenereerde opdracht:
Probeer de opdrachtcombinaties.
Uitleg:
`strace` Voer het commando uit.
Combineer deze opties en voer de opdracht virtueel uit met de AI.
Gebruiksvoorbeelden
Diverse gebruiksvoorbeelden met strace.
Eenvoudige commando-tracering
strace ls
Traceert de systeemoproepen van het `ls` commando.
Traceerresultaten opslaan in een bestand
strace -o date_trace.log date
Slaat de systeemoproepen van het `date` commando op in het bestand `date_trace.log`.
Draaiend proces traceren
strace -p 12345
Maakt verbinding met een proces met PID 12345 om systeemoproepen te traceren. (Vervang PID door de daadwerkelijke proces-ID.)
Kindprocessen traceren
strace -f bash -c "echo Hello, strace!"
Traceert de systeemoproepen van zowel `bash` als `echo` wanneer `echo` wordt uitgevoerd in de `bash` shell.
Alleen specifieke systeemoproepen filteren
strace -e trace=open,read,write cat /etc/hosts
Traceert of het `cat /etc/hosts` commando de systeemoproepen `open`, `read`, `write` gebruikt.
Duur van systeemoproepen controleren
strace -T ls
Toont de duur van elke systeemoproep.
Installatie
strace is mogelijk niet standaard inbegrepen in de meeste Linux-distributies. U kunt het installeren met de volgende commando's.
Debian/Ubuntu
sudo apt update && sudo apt install strace
Installeert met de APT-pakketbeheerder.
CentOS/RHEL 7
sudo yum install strace
Installeert met de YUM-pakketbeheerder.
Fedora/RHEL 8+
sudo dnf install strace
Installeert met de DNF-pakketbeheerder.
Tips & Aandachtspunten
strace is krachtig, maar er zijn enkele overwegingen bij het gebruik ervan.
Prestatie-impact
Omdat strace systeemoproepen onderschept, kan het de prestaties van het getraceerde programma aanzienlijk beïnvloeden, vooral bij programma's met veel I/O. Gebruik het voorzichtig in productieomgevingen.
Interpretatie van uitvoer
De uitvoer van strace kan erg omvangrijk zijn, dus het is raadzaam om alleen de benodigde informatie te filteren (-e) of op te slaan in een bestand (-o) voor analyse. Gedetailleerde informatie over specifieke systeemoproepen kan worden gevonden met `man 2 <syscall_name>`.
Rechten
Om processen van andere gebruikers te traceren of systeemwijde gedragingen te traceren, zijn `root`-rechten vereist.
Verschil met debugging-tools
strace werkt op het niveau van systeemoproepen en kan, in tegenstelling tot debuggers zoals `gdb`, niet direct variabelen of functieaanroepen binnen een programma manipuleren of stack traces bekijken. Beide tools kunnen elkaar aanvullen.