DTrace auf Centos / Fedora beschränkt

8

Ich wollte an einem Problem mit einer Centos 6-Box arbeiten. Ich habe dtrace ausgeführt und es ist fehlgeschlagen. Es akzeptiert keine -noder -loder -Poder irgendwelche Befehlszeilenoptionen. Es behauptet, nur zu akzeptieren -h, -G, -C, -I, -s, und -o. Ich dachte, dass dies eine seltsame Centos-Sache sein muss, also ging ich, um eine Fedora 22-Box zu überprüfen. Gleicher Fehler. Es werden nur sehr wenige Befehlszeilenoptionen akzeptiert. Ich habe eine Oracle-Box ausprobiert, die RedHat wie Centos sehr ähnlich ist und Fedora ähnelt. Es hat gut funktioniert. Ich konnte einfach laufen dtraceund eine lange Liste aller Befehlszeilenoptionen erhalten. Ich ging zurück zu Centos und Fedora. Wenn ich eintrete dtrace, ist die AusgabeUsage /bin/dtrace [--help] [-h | -G] [-C [-I<Path>]] -s File.d [-o <File>]. Nach einer Stunde Googeln habe ich aufgegeben. Wie bringt man dtrace dazu, auf Centos / Fedora richtig zu funktionieren? Ich habe sowohl als Root als auch als Benutzer versucht. Ich habe nach Paketen gesucht, um die Funktionalität zu erhöhen. Ich habe versucht, dtrace zu entfernen und neu zu installieren. Sie müssen nur noch das Paket entfernen und dtrace von der Quelle installieren.

Kainaw
quelle
Auf dem Oracle-Computer dtrace -n BEGINfunktioniert so etwas wie (zeigt die Ablaufverfolgung an). Auf den Centos / Fedora-Computern wird der Verwendungsfehler angezeigt, da -n nicht unterstützt wird. Es werden fast keine Befehlszeilenoptionen unterstützt.
Kainaw

Antworten:

8

Das dtrace, das Sie unter Oracle Linux finden, ist nicht das dtrace, das mit Linux systemtap geliefert wird und das Sie auf jeder anderen Linux-Distribution finden.

Es handelt sich vielmehr um eine von Oracle bereitgestellte Portierung von Solaris dtrace, die nur unter Oracle Linux verfügbar ist.

Die beiden Befehle sind völlig unterschiedlich und haben unterschiedliche Zwecke.

Die Standard-Linux-Kernel-Tracing-Funktion ist als systemtap bekannt, und Oracle dtrace ist nur ein proprietärer Wrapper darüber. Sie können systemtap immer direkt verwenden .

Michael Hampton
quelle
4

Das dtraceSkript, das in Nicht-Oracle Linux-Distributionen enthalten ist, ist ein kleines Tool aus dem systemtapProjekt. Es bietet nur die <sys/sdt.h>Funktionen zum Erstellen von Objekten / Header-Dateien von solaris dtrace. Es ordnet es Systemtap-Datenstrukturen zu, sodass die stap -L 'process("a.out").mark("*")Sonden die Instrumentierung auflisten .

fche
quelle
3

Jetzt können Sie BPFtrace verwenden!

https://github.com/iovisor/bpftrace

BPFtrace is a high-level tracing language for Linux enhanced Berkeley Packet Filter (eBPF) available in recent Linux kernels (4.x). BPFtrace uses LLVM as a backend to compile scripts to BPF-bytecode and makes use of BCC for interacting with the Linux BPF system, as well as existing Linux tracing capabilities: kernel dynamic tracing (kprobes), user-level dynamic tracing (uprobes), and tracepoints. The BPFtrace language is inspired by awk and C, and predecessor tracers such as DTrace and SystemTap. BPFtrace was created by Alastair Robertson.

bpftrace Sondentypen

Alte Antwort:

You can install the Linux port of Sun/Oracle dtrace from source here: https://github.com/dtrace4linux/linux

Dylan
quelle