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

8

Я хотел работать над проблемой на коробке 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 из исходного кода.

kainaw
источник
На машине Oracle работает что-то похожее dtrace -n BEGIN(показывает трассировку). На машинах Centos / Fedora я получаю сообщение об ошибке использования, поскольку -n не поддерживается. Параметры командной строки почти не поддерживаются.
kainaw

Ответы:

8

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

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

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

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

Майкл Хэмптон
источник
4

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

fche
источник
3

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

Типы зондов bpftrace

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

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

Dylan
источник