DTrace limité sur Centos / Fedora

8

Je voulais travailler sur un problème sur une box Centos 6. J'ai exécuté dtrace et cela a échoué. Il n'accepte -nni -lou -Pni aucune option de ligne de commande. Il prétend accepter SEULEMENT -h, -G, -C, -I, -set -o. J'ai pensé que cela devait être quelque chose de Centos bizarre, alors je suis allé vérifier sur une boîte Fedora 22. Même problème. Il n'accepte qu'un nombre très limité d'options de ligne de commande. Je suis allé essayer une boîte Oracle, qui ressemble beaucoup à RedHat comme Centos et similaire à Fedora. Cela a bien fonctionné. J'ai pu exécuter juste dtraceet obtenir une longue liste de toutes les options de ligne de commande. Je suis retourné à Centos et Fedora. Quand j'entre dtrace, la sortie estUsage /bin/dtrace [--help] [-h | -G] [-C [-I<Path>]] -s File.d [-o <File>]. Donc, après une heure de recherche sur Google, j'ai abandonné. Comment faire fonctionner correctement dtrace sur Centos / Fedora? J'ai essayé à la fois en tant que root et en tant qu'utilisateur. J'ai recherché des packages pour augmenter la fonctionnalité. J'ai essayé de supprimer et de réinstaller dtrace. La seule chose qui reste est de supprimer le package et d'installer dtrace à partir de la source.

kainaw
la source
Sur la machine Oracle, exécuter quelque chose comme dtrace -n BEGINfonctionne (montre la trace). Sur les machines Centos / Fedora, j'obtiens l'erreur d'utilisation car -n n'est pas pris en charge. Presque aucune option de ligne de commande n'est prise en charge.
kainaw

Réponses:

8

La dtrace que vous trouvez sur Oracle Linux n'est pas la dtrace fournie avec Linux systemtap et que vous trouverez sur toutes les autres distributions Linux.

Il s'agit plutôt d' un portage de Solaris dtrace fourni par Oracle et uniquement disponible sur Oracle Linux.

Les deux commandes sont complètement différentes et ont des objectifs différents.

La fonction standard de traçage du noyau Linux est connue sous le nom de systemtap, et dtrace d'Oracle n'est qu'un wrapper propriétaire. Vous pouvez toujours utiliser systemtap directement .

Michael Hampton
la source
4

Le dtracescript qui vient sur les distributions Linux non Oracle est un petit outil du systemtapprojet. Il fournit uniquement la <sys/sdt.h>fonctionnalité de création d'objet / fichier d'en-tête de Solaris Dtrace. Il le mappe aux structures de données SystemTap, donc les stap -L 'process("a.out").mark("*")sondes répertorieront l'instrumentation.

fche
la source
3

Vous pouvez maintenant utiliser BPFtrace!

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.

types de sonde bpftrace

Ancienne réponse:

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

Dylan
la source