linuxerlangdtracesystemtap

Compiling erlang with systemtap but require dtrace


I'm compiling erlang otp from source like following:

./configure --with-dynamic-trace=systemtap

But it reports error:

checking for dtrace... no
configure: error: No dtrace utility found.

I think systemtap is for linux usage and it is different from dtrace, am I right?


After installed dtrace Now the error is:

dtrace: failed to compile script emulator/beam/erlang_dtrace.d: Preprocessor not found
configure: error: Could not precompile erlang_dtrace.d: dtrace -h failed
configure: error: /root/otp/erts/configure failed for erts

Solution

  • Which distro are you using? I'd forget using DTRACE, it will be a bit harder to make it to work than Systemtap (at least it was for me). I'm using Systemtap and it works perfectly.

    If you are not using Fedora/RH you should patch your kernel with UTRACE or use a kernel >= 3.5 with UPBOBES enabled.

    To verify if your kernel has UTRACE/UPROBE enabled run this:

    grep UTRACE /boot/config-$(uname -r)
    

    or

    grep PROBES /boot/config-$(uname -r)
    

    For example, in my machine (Ubuntu 12.04 with Mainline kernel 3.5):

    $ grep UTRACE /boot/config-$(uname -r)
    $
    $ grep UPROBES /boot/config-$(uname -r)
    CONFIG_ARCH_SUPPORTS_UPROBES=y
    CONFIG_UPROBES=y
    

    You should also have systemtap installed. The version shipped with Ubuntu (my case) is quite old, so I compiled it from source (traditional configure/make/make install). You can get it here:

    http://sourceware.org/systemtap/ftp/releases/

    I'm using version 1.8.

    Then try to recompile it again. It should work.

    Regards