Quería trabajar en un problema en una caja Centos 6. Corrí dtrace y falló. No acepta -no -lo -Po cualquier opción de línea de comandos. Se afirma que aceptar SOLAMENTE -h, -G, -C, -I, -s, y -o. Pensé que esto debería ser algo extraño de Centos, así que fui a verificar en una caja de Fedora 22. Mismo problema. Solo acepta un número muy limitado de opciones de línea de comando. Fui a probar una caja Oracle, que es muy RedHat como Centos y similar a Fedora. Funcionó bien. Pude ejecutar solo dtracey obtener una larga lista de todas las opciones de línea de comandos. Regresé a Centos y Fedora. Cuando entro dtrace, la salida esUsage /bin/dtrace [--help] [-h | -G] [-C [-I<Path>]] -s File.d [-o <File>]. Entonces, después de una hora de buscar en Google, me di por vencido. ¿Cómo consigue que dtrace funcione correctamente en Centos / Fedora? He intentado tanto como root como usuario. He buscado paquetes para aumentar la funcionalidad. He intentado eliminar y reinstalar dtrace. Lo único que queda es eliminar el paquete e instalar dtrace de la fuente.
8

dtrace -n BEGINfunciona (muestra la traza). En las máquinas Centos / Fedora, recibo el error de uso porque -n no es compatible. Casi no se admiten opciones de línea de comandos.Respuestas:
El dtrace que encuentra en Oracle Linux no es el dtrace que viene con Linux systemtap y que encontrará en cualquier otra distribución de Linux.
Más bien, es un puerto de Solaris dtrace proporcionado por Oracle y solo disponible en Oracle Linux.
Los dos comandos son completamente diferentes y tienen diferentes propósitos.
La instalación estándar de rastreo del kernel de Linux se conoce como systemtap, y dtrace de Oracle es solo un contenedor propietario sobre eso. Siempre puede usar systemtap directamente .
fuente
El
dtracescript que viene en las distribuciones de Linux que no son de Oracle es una pequeña herramienta delsystemtapproyecto. Proporciona solo la<sys/sdt.h>funcionalidad de creación de objetos / encabezados relacionados con Solaris dtrace. Lo asigna a estructuras de datos de systemtap, por lo que lasstap -L 'process("a.out").mark("*")sondas enumerarán la instrumentación.fuente
¡Ahora puedes usar 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.Vieja respuesta:
You can install the Linux port of Sun/Oracle dtrace from source here: https://github.com/dtrace4linux/linuxfuente