Eu queria trabalhar em um problema em uma caixa Centos 6. Corri o dtrace e falhou. Não aceita -n
ou -l
ou -P
ou qualquer opção de linha de comando. Alega para aceitar apenas -h
, -G
, -C
, -I
, -s
, e -o
. Achei que isso deveria ser uma coisa estranha do Centos, então fui verificar em uma caixa do Fedora 22. Mesmo problema. Ele aceita apenas um número muito limitado de opções de linha de comando. Fui tentar uma caixa Oracle, que é muito mais RedHat como o Centos e semelhante ao Fedora. Funcionou bem. Eu era capaz de executar apenas dtrace
e obter uma longa lista de todas as opções de linha de comando. Voltei ao Centos e ao Fedora. Quando entro 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 no Google, eu desisti. Como você faz o dtrace funcionar corretamente no Centos / Fedora? Eu tentei tanto como root e como 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 da fonte.
8
dtrace -n BEGIN
funciona (mostra o rastreio). Nas máquinas Centos / Fedora, recebo o erro de uso porque -n não é suportado. Quase nenhuma opção de linha de comando é suportada.Respostas:
O dtrace que você encontra no Oracle Linux não é o dtrace que acompanha o Linux systemtap e que você encontrará em todas as outras distribuições Linux.
Em vez disso, é uma porta do Solaris dtrace fornecida pela Oracle e disponível apenas no Oracle Linux.
Os dois comandos são completamente diferentes e têm finalidades diferentes.
O recurso de rastreamento de kernel padrão do Linux é conhecido como systemtap, e o dtrace da Oracle é apenas um invólucro proprietário sobre isso. Você sempre pode usar systemtap diretamente .
fonte
O
dtrace
script que vem nas distribuições Linux não Oracle é uma pequena ferramenta dosystemtap
projeto. Ele fornece apenas a<sys/sdt.h>
funcionalidade de criação de objeto / arquivo de cabeçalho relacionada ao solaris dtrace. Ele o mapeia para estruturas de dados da systemtap, para que osstap -L 'process("a.out").mark("*")
probes listem a instrumentação.fonte
Agora você pode usar o 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.
Resposta antiga:
You can install the Linux port of Sun/Oracle dtrace from source here: https://github.com/dtrace4linux/linux
fonte