Dtrace

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

dtrace - Dynamisk spårning av operativsystem och applikationer

`dtrace` är ett kraftfullt diagnostiskt och felsökningsverktyg som används för att dynamiskt spåra operativsystem och applikationer. Det är användbart för att analysera prestanda, felsöka problem och få insikter i systemets beteende.

NAMN

dtrace - Dynamisk spårning av operativsystem och applikationer

SYNOPSIS

dtrace [alternativ] [script [arg1 arg2 ...]]

BESKRIVNING

`dtrace` är ett flexibelt verktyg för att spåra systemhändelser i realtid. Det kan användas för att analysera prestanda, övervaka systemresurser och felsöka applikationer. `dtrace` fungerar genom att dynamiskt infoga spårningspunkter i både kärnan och användarapplikationer, vilket ger detaljerad information om systemets beteende.

ALTERNATIV

Kommandot `dtrace` stöder flera alternativ som kan användas för att justera dess beteende:

  • -a, --flowindent - Visa in- och utflöde av funktionsanrop med indrag.
  • -b, --bufsize=size - Ställ in storleken på bufferten.
  • -c, --exec=command - Kör angivet kommando och spåra det.
  • -e, --compile - Kompilera men kör inte scriptet.
  • -h, --help - Visa hjälpmeddelande och avsluta.
  • -l, --list - Lista alla tillgängliga provtagare.
  • -n, --name=probe - Aktivera spårning för angiven provtagare.
  • -o, --output=file - Skriv utdata till angiven fil.
  • -p, --pid=pid - Fäst dtrace till en befintlig process med angivet PID.
  • -q, --quiet - Undertryck all icke-väsentlig utdata.
  • -s, --script=file - Kör scriptet i angiven fil.
  • -x, --option[=value] - Ställ in dtrace-alternativ.
  • -Z, --enable - Aktivera provtagare även om de inte finns.

KOMMANDON

Kommandot `dtrace` stöder flera kommandon som kan användas för att spåra och analysera systemhändelser:

Köra ett dtrace-script

`dtrace` kan användas för att köra ett specifikt dtrace-script.

EXEMPEL

dtrace -s myscript.d

Detta kommando kör `myscript.d`, ett dtrace-script som specificerar vilka systemhändelser som ska spåras och hur de ska behandlas.

Köra ett kommando och spåra det

`dtrace` kan användas för att köra ett specifikt kommando och spåra dess systemhändelser.

EXEMPEL

dtrace -c ls

Detta kommando kör `ls` och spårar dess systemhändelser.

Fästa dtrace till en befintlig process

`dtrace` kan användas för att fästa sig till en befintlig process och spåra dess systemhändelser.

EXEMPEL

dtrace -p 1234

Detta kommando fäster `dtrace` till processen med PID 1234 och spårar dess systemhändelser.

Lista tillgängliga provtagare

`dtrace` kan användas för att lista alla tillgängliga provtagare som kan spåras.

EXEMPEL

dtrace -l

Detta kommando listar alla tillgängliga provtagare som kan spåras av `dtrace`.

Visa in- och utflöde av funktionsanrop

`dtrace` kan användas för att visa in- och utflöde av funktionsanrop med indrag.

EXEMPEL

dtrace -a -n 'syscall:::' 

Detta kommando visar in- och utflöde av alla systemanrop med indrag.

Ställa in storleken på bufferten

`dtrace` kan användas för att ställa in storleken på bufferten som används för att lagra spårningsdata.

EXEMPEL

dtrace -b 8m -s myscript.d

Detta kommando ställer in buffertstorleken till 8 megabyte och kör `myscript.d`.

Skriv utdata till en fil

`dtrace` kan användas för att skriva spårningsutdata till en specifik fil.

EXEMPEL

dtrace -o output.txt -c ls

Detta kommando skriver utdata från spårning av `ls` till filen `output.txt`.

Aktivera specifika provtagare

`dtrace` kan användas för att aktivera specifika provtagare.

EXEMPEL

dtrace -n syscall::read:entry

Detta kommando aktiverar spårning av `read` systemanrop vid inmatning.

Använda dtrace-alternativ

`dtrace` kan användas för att ställa in specifika alternativ som påverkar dess beteende.

EXEMPEL

dtrace -x aggsize=8m -s myscript.d

Detta kommando ställer in aggregatstorleken till 8 megabyte och kör `myscript.d`.

SKILLNADER MELLAN macOS OCH LINUX

Det finns viktiga skillnader att tänka på när man använder `dtrace` på macOS jämfört med Linux:

Tillgänglighet: `dtrace` är inbyggt i macOS, medan det på Linux kan kräva installation av specifika paket och aktivering av kärnmoduler.

Installationssteg på Linux:

  • På Debian-baserade system:

sudo apt-get update
sudo apt-get install dtrace

  • På Red Hat-baserade system:

sudo yum install dtrace

Installationssteg på macOS: `dtrace` är inbyggt i macOS och kräver ingen ytterligare installation.


sudo dtrace -l

Funktionalitet: De flesta funktioner som erbjuds av `dtrace` är tillgängliga på både macOS och Linux. Vissa detaljer kan dock skilja sig beroende på implementation och användningsfall.

Användning: På både macOS och Linux används `dtrace` ofta för att övervaka och felsöka systemhändelser. På macOS är `dtrace` ett standardverktyg som är väl integrerat med systemet, medan det på Linux kan kräva ytterligare konfiguration och installation.

FELSÖKNING

Om du får ett felmeddelande när du använder `dtrace`, kontrollera följande:

Att du använder rätt syntax och alternativ för ditt specifika kommando. Att scriptet du försöker köra är korrekt och inte innehåller några syntaktiska fel. Att alla nödvändiga paket och bibliotek är installerade och uppdaterade. Att du har tillräckliga användarrättigheter för att spåra systemhändelser.

Vanliga fel och deras lösningar:

  • Felmeddelande: "Permission denied":
 * Lösning: Kontrollera att du har nödvändiga behörigheter för att spåra de specifika systemhändelserna.
  • Felmeddelande: "No such process":
 * Lösning: Kontrollera att den angivna processen existerar och är korrekt stavad.
  • Felmeddelande: "Invalid probe specifier":
 * Lösning: Kontrollera att du anger giltiga provtagare för spårning.

AVANCERAD ANVÄNDNING

`dtrace` erbjuder avancerade funktioner som kan användas för att spåra och analysera systemhändelser mer effektivt. Här är några exempel:

Skapa egna dtrace-script

Du kan skapa egna dtrace-script för att spåra specifika systemhändelser och utföra specifika åtgärder baserat på dessa händelser.

EXEMPEL

# myscript.d
syscall::open:entry {
    printf("Process %d is opening file %s\n", pid, copyinstr(arg0));
}

Detta script spårar `open` systemanrop och skriver ut en meddelande när en process öppnar en fil.

Använda aggregat i dtrace

Du kan använda aggregat för att samla och analysera data över tid i dina dtrace-script.

EXEMPEL

# myagg.d
syscall::read:entry {
    @reads[execname] = count();
}
END {
    printa(@reads);
}

Detta script spårar `read` systemanrop och räknar hur många gånger varje processnamn utför detta anrop.

Spåra specifika systemresurser

Du kan använda dtrace för att spåra specifika systemresurser som CPU, minne eller nätverk.

EXEMPEL

# cpuload.d
dtrace:::BEGIN {
    printf("Tracking CPU load...\n");
}
profile:::tick-1sec {
    @cpu = avg(`cpuinfo.cpu[0].cpu_ticks[CPU_IDLE]);
}
END {
    printa(@cpu);
}

Detta script spårar CPU-belastningen över tid och skriver ut genomsnittlig CPU-idle-tid.

SE ÄVEN

  • strace - Spåra systemanrop och signaler (Linux).
  • lsof - Lista öppna filer och de processer som använder dem.
  • gdb - GNU Debugger.
  • ptrace - Spåra systemanrop och signaler för en process.

FÖRFATTARE

`dtrace` utvecklades ursprungligen av Sun Microsystems och är nu en del av flera operativsystem inklusive macOS och Linux.

KOLOFON

Denna sida är en del av `dtrace`-projektet. Mer information om projektet finns på ⟨https://dtrace.org⟩. Om du har en buggrapport för denna manualsida, se ⟨https://github.com/dtrace/dtrace/issues⟩. Denna sida erhölls från projektets upstream Git-repository ⟨https://github.com/dtrace/dtrace.git⟩ den 2023-12-22. Om du upptäcker några renderingsproblem i denna HTML-version av sidan, eller om du tror att det finns en bättre eller mer uppdaterad källa för sidan, eller om du har korrigeringar eller förbättringar av informationen i denna KOLOFON (som inte är en del av den ursprungliga manualsidan), skicka ett e-postmeddelande till man-pages@man7.org.

KÄLLOR

dtrace manual (Linux) dtrace Officiell Webbplats dtrace GitHub Repository