「DTrace」の版間の差分

提供: FreeBSD入門
移動: 案内検索
(ページの作成:「<!-- vim: fileencoding=utf-8 filetype=mediawiki --> [[{{PAGENAME}}]] とは、ダイナミックトレーシングコンパイラとトレーシングユーテリテ...」)
(相違点なし)

2013年6月5日 (水) 23:11時点における版


DTrace とは、ダイナミックトレーシングコンパイラとトレーシングユーテリティです。

読み方

DTrace
でぃーとれーす

概要

DTrace

カーネルのサポートを追加する

  1. デバッグシンボルを有効にします。
    makeoptions DEBUG="-g"
  2. FreeBSD 10よりも前なら追加します。
    options KDTRACE_HOOKS # all architectures - enable general DTrace hooks
    options DDB_CTF # all architectures - kernel ELF linker loads CTF data
  3. AMD64(すべてのバージョン)は、下記を追加します。
    options KDTRACE_FRAME        # amd64 - ensure frames are compiled in
  4. FreeBSD 9.0 移行は、カーネルコンフィグレーションファイルに WITH_CTF=1を定義しなければなりません。
    makeoptions WITH_CTF=1


カーネルの再構築とインストール

  1. FreeBSD 9 以降
    make buildkernel KERNCONF=DTRACE
  2. FreeBSD 8-STABLE 以前
    make buildkernel WITH_CTF=1 KERNCONF=DTRACE
  3. カーネルのインストールとリブート
    make installkernel KERNCONF=DTRACE
    shutdown -r now

はじめに

  1. すべての DTrace カーネルモジュールをロードします。
    kldload dtraceall
  2. DTrace フックを確認します。
    dtrace -l | head
  3. カーネルが正しくコンパイルされているか確認します。
    dtrace -n 'syscall:::entry { @num[execname] = count(); }'
    下記のエラーが出たら、前に戻って、コンパイルしなおして下さい。
    dtrace: invalid probe specifier syscall:::entry { @num[execname] = count(); }: "/usr/lib/dtrace/psinfo.d", line 37: failed to copy type of 'pr_uid': Type information is in parent and unavailable

ユーザーランド DTrace

FreeBSD 9.0 以降

  1. ユーザーランド DTrace サポートのために、 make.conf ( もしくは src.conf ) に下記の行を追加します。
    STRIP=
    CFLAGS+=-fno-omit-frame-pointer
  2. make.conf (or src.conf)に WITH_CTF=1 を追加して、再構築と install world します。
    make buildworld
    shutdown -r NOW
    boot -s
    make installworld
    reboot

FreeBSD 8-STABLE 以前

  1. make.conf
    STRIP=
    CFLAGS+=-fno-omit-frame-pointer
  2. 再構築と install world
    make WITH_CTF=1 buildworld
    shutdown -r NOW
    boot -s
    make installworld

関連項目