「DTrace」の版間の差分
提供: FreeBSD入門
(→関連項目) |
|||
行1: | 行1: | ||
− | + | [[DTrace]] とは、ダイナミックトレーシングコンパイラとトレーシングユーテリティです。 | |
− | + | ||
− | + | ||
− | [[ | + | |
'''読み方''' | '''読み方''' | ||
− | + | ;[[DTrace]]:でぃーとれーす | |
− | ;[[ | + | |
__TOC__ | __TOC__ | ||
== 概要 == | == 概要 == | ||
− | |||
− | |||
− | |||
== カーネルのサポートを追加する == | == カーネルのサポートを追加する == | ||
− | + | # デバッグシンボルを有効にします。 | |
− | # | + | |
#: <syntaxhighlight lang="bash"> | #: <syntaxhighlight lang="bash"> | ||
makeoptions DEBUG="-g" | makeoptions DEBUG="-g" | ||
行23: | 行15: | ||
#: options KDTRACE_HOOKS # all architectures - enable general DTrace hooks | #: options KDTRACE_HOOKS # all architectures - enable general DTrace hooks | ||
#: options DDB_CTF # all architectures - kernel ELF linker loads CTF data | #: options DDB_CTF # all architectures - kernel ELF linker loads CTF data | ||
− | # | + | # AMD64(すべてのバージョン)は、下記を追加します。 |
#: <syntaxhighlight lang="bash"> | #: <syntaxhighlight lang="bash"> | ||
options KDTRACE_FRAME # amd64 - ensure frames are compiled in | options KDTRACE_FRAME # amd64 - ensure frames are compiled in | ||
行31: | 行23: | ||
makeoptions WITH_CTF=1 | makeoptions WITH_CTF=1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== カーネルの再構築とインストール == | == カーネルの再構築とインストール == | ||
− | |||
# [[FreeBSD]] 9 以降 | # [[FreeBSD]] 9 以降 | ||
#: <syntaxhighlight lang="bash"> | #: <syntaxhighlight lang="bash"> | ||
行45: | 行35: | ||
#: make installkernel KERNCONF=DTRACE | #: make installkernel KERNCONF=DTRACE | ||
#: shutdown -r now | #: shutdown -r now | ||
− | |||
== はじめに == | == はじめに == | ||
− | |||
# すべての [[DTrace]] カーネルモジュールをロードします。 | # すべての [[DTrace]] カーネルモジュールをロードします。 | ||
#: <syntaxhighlight lang="bash"> | #: <syntaxhighlight lang="bash"> | ||
行62: | 行50: | ||
#: 下記のエラーが出たら、前に戻って、コンパイルしなおして下さい。 | #: 下記のエラーが出たら、前に戻って、コンパイルしなおして下さい。 | ||
#: 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: 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 == | == ユーザーランド DTrace == | ||
− | |||
=== FreeBSD 9.0 以降 === | === FreeBSD 9.0 以降 === | ||
− | |||
# ユーザーランド [[DTrace]] サポートのために、 make.conf ( もしくは src.conf ) に下記の行を追加します。 | # ユーザーランド [[DTrace]] サポートのために、 make.conf ( もしくは src.conf ) に下記の行を追加します。 | ||
#: STRIP= | #: STRIP= | ||
行76: | 行61: | ||
#: make installworld | #: make installworld | ||
#: reboot | #: reboot | ||
− | |||
=== FreeBSD 8-STABLE 以前 === | === FreeBSD 8-STABLE 以前 === | ||
− | |||
# make.conf | # make.conf | ||
#: STRIP= | #: STRIP= | ||
行87: | 行70: | ||
#: boot -s | #: boot -s | ||
#: make installworld | #: make installworld | ||
− | |||
== 関連項目 == | == 関連項目 == | ||
* [[dtrace]] | * [[dtrace]] | ||
* [[デバッグ]] | * [[デバッグ]] | ||
− | |||
{{kernel}} | {{kernel}} | ||
+ | <!-- vim: fileencoding=utf-8 filetype=mediawiki | ||
+ | --> |
2015年9月27日 (日) 17:38時点における最新版
DTrace とは、ダイナミックトレーシングコンパイラとトレーシングユーテリティです。
読み方
- DTrace
- でぃーとれーす
目次
概要
カーネルのサポートを追加する
- デバッグシンボルを有効にします。
-
makeoptions DEBUG="-g"
-
- FreeBSD 10よりも前なら追加します。
- options KDTRACE_HOOKS # all architectures - enable general DTrace hooks
- options DDB_CTF # all architectures - kernel ELF linker loads CTF data
- AMD64(すべてのバージョン)は、下記を追加します。
-
options KDTRACE_FRAME # amd64 - ensure frames are compiled in
-
- FreeBSD 9.0 移行は、カーネル コンフィグレーションファイルに WITH_CTF=1を定義しなければなりません。
-
makeoptions WITH_CTF=1
-
カーネルの再構築とインストール
- FreeBSD 9 以降
-
make buildkernel KERNCONF=DTRACE
-
- FreeBSD 8-STABLE 以前
-
make buildkernel WITH_CTF=1 KERNCONF=DTRACE
-
- カーネルのインストールとリブート
- make installkernel KERNCONF=DTRACE
- shutdown -r now
はじめに
- すべての DTrace カーネルモジュールをロードします。
-
kldload dtraceall
-
- DTrace フックを確認します。
-
dtrace -l | head
-
- カーネルが正しくコンパイルされているか確認します。
-
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 以降
- ユーザーランド DTrace サポートのために、 make.conf ( もしくは src.conf ) に下記の行を追加します。
- STRIP=
- CFLAGS+=-fno-omit-frame-pointer
- make.conf (or src.conf)に WITH_CTF=1 を追加して、再構築と install world します。
- make buildworld
- shutdown -r NOW
- boot -s
- make installworld
- reboot
FreeBSD 8-STABLE 以前
- make.conf
- STRIP=
- CFLAGS+=-fno-omit-frame-pointer
- 再構築と install world
- make WITH_CTF=1 buildworld
- shutdown -r NOW
- boot -s
- make installworld
関連項目
- dtrace
- デバッグ
- カーネル (kernel)
- カスタムカーネル
- コンフィグレーションファイル
- make world
- Accept Filter
- freebsd-update
- カーネルモジュール
- kldxref
- DTrace
- ktrace/kdump