DTrace limitado en Centos / Fedora

8

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.

kainaw
fuente
En la máquina Oracle, ejecutar algo como 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.
kainaw

Respuestas:

8

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 .

Michael Hampton
fuente
4

El dtracescript que viene en las distribuciones de Linux que no son de Oracle es una pequeña herramienta del systemtapproyecto. 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 las stap -L 'process("a.out").mark("*")sondas enumerarán la instrumentación.

fche
fuente
3

¡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.

Tipos de sonda bpftrace

Vieja respuesta:

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

Dylan
fuente