我正在虚拟Linux上捆绑工作/安装Systemtap工具来分析OS过程。我正在使用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.语义错误: libdwfl失败,在处理调试信息时出现问题。在大多数情况下,此错误是由于安装了内核-调试器包,其版本与探测到的内核不完全匹配。安装的内核-调试器包本身可能存在一些一致性或正确性问题。
我没有找到“内核-调试器”包的相关信息。我也尝试了冗长的选择,没有好处。我甚至尝试使用VM的旧快照。有什么想法吗?
我运行的.stp程序的代码:
probe timer.profile{
printf("Process: %s\n", execname())
printf("Process ID: %d\n", pid())
}发布于 2015-08-07 02:11:52
发现问题了!我似乎使用了Linux内核的错误版本。我使用的是我在问题中编写的版本所提供的默认内核。似乎该版本( 2.6.32-5-686版本)在调试-info中存在问题,所以我所做的只是尝试使用另一个版本(Linux3.9.6版和gcc版本4.7.2 Debian 4.7.2-5),并且没有出现问题:)
https://stackoverflow.com/questions/31838080
复制相似问题