Je voulais travailler sur un problème sur une box Centos 6. J'ai exécuté dtrace et cela a échoué. Il n'accepte -n
ni -l
ou -P
ni aucune option de ligne de commande. Il prétend accepter SEULEMENT -h
, -G
, -C
, -I
, -s
et -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 dtrace
et 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.
8
dtrace -n BEGIN
fonctionne (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.Réponses:
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 .
la source
Le
dtrace
script qui vient sur les distributions Linux non Oracle est un petit outil dusystemtap
projet. 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 lesstap -L 'process("a.out").mark("*")
sondes répertorieront l'instrumentation.la source
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.
Ancienne réponse:
You can install the Linux port of Sun/Oracle dtrace from source here: https://github.com/dtrace4linux/linux
la source