1

我正在从源代码编译 erlang otp,如下所示:

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

但它报告错误:

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

我认为 systemtap 是用于 linux 的,它与 dtrace 不同,对吗?


安装dtrace后现在的错误是:

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
4

2 回答 2

2

您使用的是哪个发行版?我会忘记使用 DTRACE,它会比 Systemtap 更难工作(至少对我来说是这样)。我正在使用 Systemtap,它运行良好。

如果您不使用 Fedora/RH,您应该使用 UTRACE 修补您的内核或使用启用了 UPBOBES 的 >= 3.5 的内核。

要验证您的内核是否启用了 UTRACE/UPROBE,请运行以下命令:

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

或者

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

例如,在我的机器上(带有 Mainline 内核 3.5 的 Ubuntu 12.04):

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

您还应该安装 systemtap。Ubuntu(我的情况)附带的版本很旧,所以我从源代码编译它(传统的配置/制作/制作安装)。你可以在这里得到它:

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

我使用的是 1.8 版。

然后尝试再次重新编译它。它应该工作。

问候

于 2012-09-21T16:10:41.023 回答
0
  • 安装 systemtap(sudo apt-get install systemtap)后,退出或退出当前 shell 会话然后登录可能会有所帮助。

  • 另外,您可以尝试使用kerl

于 2020-04-29T04:03:52.137 回答