DTrace ограничивается Centos/Fedora

Я хотел работать над проблемой на коробке Centos 6. Я запустил Dtrace, и это не удалось. Не принимает -n или же -l или же -P или любые параметры командной строки. Он утверждает, что принимает только -h, -G, -C, -I, -s, а также -o, Я подумал, что это, должно быть, какая-то странная вещь из Centos, поэтому я пошел проверять коробку Fedora 22. Та же проблема. Он принимает только очень ограниченное количество параметров командной строки. Я решил попробовать коробку Oracle, которая очень похожа на Centos RedHat и похожа на Fedora. Работало нормально. Я смог бежать только dtrace и получите длинный список всех параметров командной строки. Я вернулся в Centos и Fedora. Когда я вхожу dtrace, выход Usage /bin/dtrace [--help] [-h | -G] [-C [-I<Path>]] -s File.d [-o <File>], Итак, после часа поиска в Google, я сдался. Как заставить dtrace правильно работать на Centos/Fedora? Я пробовал как как пользователь root, так и пользователь. Я искал пакеты для увеличения функциональности. Я попытался удалить и переустановить dtrace. Осталось только удалить пакет и установить dtrace из исходного кода.

3 ответа

Решение

Dtrace, который вы найдете в Oracle Linux, не является dtrace, который поставляется с системной записью Linux и который вы найдете в любом другом дистрибутиве Linux.

Скорее, это порт Solaris dtrace, предоставляемый Oracle и доступный только в Oracle Linux.

Эти две команды совершенно разные и имеют разные цели.

Стандартное средство трассировки ядра Linux известно как systemtap, а Oracle dtrace является всего лишь фирменной оболочкой для этого. Вы всегда можете использовать systemtap напрямую.

dtrace Сценарий, который поставляется на дистрибутивах Linux, отличных от Oracle, представляет собой небольшой инструмент из systemtap проект. Это обеспечивает только <sys/sdt.h>-связанные функциональные возможности объекта / заголовочного файла Solaris dtrace. Он отображает его на структуры данных systemtap, поэтому stap -L 'process("a.out").mark("*") зонды перечисляют контрольно-измерительные приборы.

Теперь вы можете использовать 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.

Старый ответ:

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

Другие вопросы по тегам