Startpagina > Pakket- en systeembeheer > strace

strace: Systeemoproepen en signaaltracering

strace is een krachtig diagnostisch hulpmiddel in Linux dat systeemoproepen (syscalls) en ontvangen signalen van processen traceert en registreert. Hiermee kunt u gedetailleerd begrijpen hoe een programma interageert met de kernel, wat het nuttig maakt voor debugging, prestatieanalyse en beveiligingsaudits.

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.


Hétzelfde categoriecommando