FreeBSD 7.1 で DTrace を使う準備2009年02月10日 06時14分13秒

dtrace は Solaris から移植された動的トレース。7.1-RELEASE から使えるようになった。Mac OS X 等にも既に移植されている。

dtrace はシステム内部の挙動やシステム関数などの様々な情報を計測、取得、処理できる。truss などもシステムコールの呼び出しを追跡する事は出来るが、dtrace は呼び出しだけでなく、呼び出された時の、引数や戻り値にまで参照できる。

7.1-RELEASE では GENERIC カーネルを変更して、カーネルを作り直す必要がある。その点では、8-CURRENT も同じだ。カーネルの設定に以下の options を追加する。


options KDTRACE_HOOKS        # all architectures
options KDTRACE_FRAME        # amd64-only

カーネルを全部作り直す必要があるので、make clean を実行する。


$ cd /usr/obj/usr/src/sys/GENERIC/
$ make clean
$ cd /usr/src
$ make buildkernel WITH_CTF=1
$ make installkernel

また、WITH_CTF=1 を忘れずに実行すること。WITH_CTF=1 は他の方法では有効に出来ず、またこれを行なわないと dtrace は動作するカーネルが作れない。

再起動後、kldload dtraceall を行なう。コンソールに、CDDL についての表示がされるようだ。


$ kldload dtraceall
This module (opensolaris) contains code covered by the
Common Development and Distribution License (CDDL)
see http://opensolaris.org/os/licensing/opensolaris_license/
$ dtrace -l | head -10
   ID   PROVIDER            MODULE                          FUNCTION NAME
    1     dtrace                                                     BEGIN
    2     dtrace                                                     END
    3     dtrace                                                     ERROR
    4   dtmalloc                                                 fbt malloc
    5   dtmalloc                                                 fbt free
    6   dtmalloc                                              cyclic malloc
    7   dtmalloc                                              cyclic free
    8   dtmalloc                                             solaris malloc
    9   dtmalloc                                             solaris free

dtrace -l で dtrace が動いているかを確認する。有効になっていない場合は、以下の様なエラーが表示される。

$  dtrace -l
dtrace: failed to initialize dtrace: DTrace device not available on system

これで準備は整った。

次回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2009/02/10/4110931/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。