FreeBSD 7.1 で DTrace が起動しない場合2009年02月14日 12時09分55秒

dtrace を使うに当たって、エラーが出ることがある。

$ 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

kldload を行ない、dtrace -l も表示される。

しかし、いざ実際に使おうとするとエラーが出て使えない場合がある。


$ dtrace -n 'syscall::open:entry'
dtrace: invalid probe specifier syscall::open:entry: "/usr/lib/dtrace/psinfo.d",
 line 37: syntax error near "uid_t"

これは、カーネルをコンパイルした時に、WITH_CTF=1 を忘れると出る。

なお、これが絶対的な原因なのは、現時点では 7.1-RELEASE でしかない。8-CURRENT は他の理由で動かない事があるので、これが必ずしも原因とは限らない。

前回