0

我正在尝试在虚拟 Linux 上工作/设置用于分析操作系统进程的 Systemtap 工具。我正在使用 VirtualBox 来运行图像。通过

rpm -q kernel

cat /proc/version

得到的版本是:

Linux version 2.6.32-5-686 (Debian 2.6.32-48squeeze4)

我已经正确下载并安装了该工具并编写了一个简单的程序(.stp)。但是我一直收到同样的错误,我在很多地方搜索了信息但没有成功:

执行后:

sudo stap my_profiler.stp

我得到:

semantic error: libdwfl failure (all kernel modules found): no error
Pass 3: translation failed. Try again with another '--vp 001' option.

根据https://sourceware.org/systemtap/SystemTap_Beginners_Guide/errors.html

⁠语义错误:libdwfl failure 处理调试信息时出现问题。在大多数情况下,此错误是由于安装了内核调试信息包,其版本与所探测的内核不完全匹配。安装的 kernel-debuginfo 包本身可能存在一些一致性或正确性问题。

我没有找到关于“kernel-debuginfo”包的相关信息。我也尝试过没有好处的详细选项。我什至尝试使用 VM 的旧快照。有任何想法吗?

我运行的 .stp 程序的代码:

probe timer.profile{
    printf("Process: %s\n", execname())
    printf("Process ID: %d\n", pid())
}
4

1 回答 1

0

发现问题了!!!!看来我使用了错误版本的 Linux 内核。我使用的是我在问题中编写的版本提供的默认内核。似乎该版本(2.6.32-5-686 版本)的调试信息存在问题,所以我所做的只是尝试使用另一个版本(Linux 版本 3.9.6 和 gcc 版本 4.7.2 Debian 4.7. 2-5)并且它没有问题地工作:)

于 2015-08-07T02:11:52.003 回答