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>]
になります。だから、グーグルの1時間後、私はあきらめました。 Centos/Fedoraでdtraceを正しく動作させるにはどうすればよいですか?私はrootとユーザーの両方として試しました。機能性を高めるためにパッケージを検索しました。 dtraceを削除して再インストールしてみました。残っているのは、パッケージを削除してソースからdtraceをインストールすることだけです。
Oracle Linuxで見つかるdtraceはnotであり、Linux systemtapに付属しているdtraceであり、他のすべてのLinuxディストリビューションで見つかるでしょう。
むしろ、 Solaris dtraceのポート はOracleによって提供され、Oracle Linuxでのみ使用可能です。
2つのコマンドは完全に異なり、目的も異なります。
標準のLinuxカーネルトレース機能はsystemtapとして知られており、Oracleのdtraceはそれに対する独自のラッパーです。いつでも systemtapを直接使用 できます。
Oracle以外のLinuxディストリビューションに付属するdtrace
スクリプトは、systemtap
プロジェクトの小さなツールです。これは、solaris dtraceの_<sys/sdt.h>
_関連のオブジェクト/ヘッダーファイル構築機能のみを提供します。それはそれを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