DTrace limitado em Centos / Fedora

7

Eu queria trabalhar em um problema em uma caixa Centos 6. Eu corri o dtrace e falhou. Ele não aceita -n ou -l ou -P ou qualquer opção de linha de comando. Ele só aceita -h , -G , -C , -I , -s e -o . Eu percebi que isso deve ser algo esquisito do Centos, então fui verificar em uma caixa do Fedora 22. Mesmo problema. Aceita apenas um número muito limitado de opções de linha de comando. Eu fui tentar uma caixa Oracle, que é muito RedHat como o Centos e similar ao Fedora. Funcionou bem. Consegui executar apenas dtrace e obter uma longa lista de todas as opções de linha de comando. Voltei para Centos e Fedora. Quando eu digito dtrace , a saída é Usage /bin/dtrace [--help] [-h | -G] [-C [-I<Path>]] -s File.d [-o <File>] . Então, depois de uma hora pesquisando, desisti. Como você consegue que o dtrace funcione corretamente no Centos / Fedora? Eu tentei tanto como root e um usuário. Eu procurei por pacotes para aumentar a funcionalidade. Eu tentei remover e reinstalar o dtrace. A única coisa que resta é remover o pacote e instalar o dtrace a partir do código-fonte.

    
por kainaw 26.08.2015 / 23:42

3 respostas

7

O dtrace que você encontra no Oracle Linux não é o dtrace que vem com o systemtap Linux e que você encontrará em todas as outras distribuições Linux.

Em vez disso, é uma porta do Solaris dtrace fornecido pela Oracle e disponível apenas no Oracle Linux.

Os dois comandos são completamente diferentes e têm finalidades diferentes.

O recurso padrão de rastreamento de kernel do Linux é conhecido como systemtap, e o dtrace da Oracle é apenas um wrapper proprietário sobre isso. Você sempre pode usar o systemtap diretamente .

    
por 26.08.2015 / 23:54
3

O script dtrace que vem em distribuições Linux não-Oracle é uma pequena ferramenta do projeto systemtap . Ele fornece apenas a funcionalidade de criação de objetos / blocos de cabeçalhos relacionados a <sys/sdt.h> do solaris dtrace. Ele mapeia para estruturas de dados systemtap, portanto, stap -L 'process("a.out").mark("*") probes listará a instrumentação.

    
por 20.12.2015 / 15:34
3

Agora você pode usar o BPFtrace!

link

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.

Resposta antiga:

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

    
por 17.10.2015 / 03:46