Dtrace ist ein Werkzeug, mit dessen Hilfe sich der Systemadministrator einer Solaris-10 (und höher)-Maschine bei gewissen Ereignissen, die sowohl im Kernel (kernelland) als auch in einer Applikation (userland) eintreten können, beliebige Daten aus dem Hauptspeicher anzeigen lassen kann.
Die Ereignisse heißen "probes" und sind den "breakpoints" in klassischen Debuggern verwandt. Eine große Anzahl "probes" ist im Solaris-10-Kernel vordefiniert, weitere lassen sich dynamisch erzeugen.
Welche Daten ausgegeben werden sollen, legt der Systemadministrator in einem Dtrace-Programm fest, dessen Syntax jener des "awk" ähnlich ist. Daher besitzt Dtrace auch die Eigenschaften eines Report-Generators.
Die Ausgabe erfolgt auf "standard out", so dass sie sich bei Bedarf mit anderen UNIX-Mitteln, wie grep oder sed, weiterverarbeiten lässt.
Beispiel:
Das dtrace-Kommando im folgende Beispiel druckt die PID eines jeden Prozesses aus, der einen "fork"-Systemaufruf einleitet:
dtrace -q -n 'syscall::fork*:entry { trace(pid); trace("\n") }'
oder etwas professioneller:
dtrace -q -n 'syscall::fork*:entry { printf("Pid of forking process =%d\n",pid) }'
Die Ausgabe von dtrace erscheint praktisch Zeitgleich mit dem Ereignis, das überwacht wird.
Andere UNIX-Derivate:
Ähnliche Werkzeuge gibt es auch für andere UNIX-Derivate, z.B. für FreeBSD und
NetBSD. Meist bieten sie aber weniger oder andere "probes" an.
Unter Linux heißt das vergleichbare Werkzeug "SystemTap" und unter AIX heißt es "ProbeVue" . Dabei weicht die Syntax vom Original teilweise etwas ab. MacOS liefert sogar eine GUI dazu, die "Instruments" heißt.