首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

linux 装配Systemtap

2012-07-20 
linux 安装Systemtap在之前的blog里介绍了一堆systemtap的资料,然后之前一直没安装成功过,这次花时间重新

linux 安装Systemtap

在之前的blog里介绍了一堆systemtap的资料,然后之前一直没安装成功过,这次花时间重新搞了下,终于成功了,很是激动,故分享下,主要是错误处理的分享。

?

?

1:??libdwfl failure (missing x86_64 kernel/module debuginfo under '/lib/modules/2.6.18-164.11.1.el5/build'):

这个错误是由于缺失?kernel-debuginfo-common 包和?kernel-debuginfo,解决方法是去http://rpm.pbone.net找到对应当前内核版本的debug包,如何看当前内核版本信息呢,使用如下命令 uname -r (一般我们使用uname -a)

切忌 一定要找合适的版本号

?

参考资料:http://steven1981.itpub.net/post/7967/525257

?

然后sudo rpm ivh XXXXXXXX?

?

安装好了以后可以看到?/usr/lib/debug 目录下有东西了。

?

然后需要告诉Systemtap去找这个debug信息了。

?

参考资料来自:

?

http://sources.redhat.com/git/?p=systemtap.git;a=blob_plain;f=README;hb=HEAD

?

- By default, systemtap looks for the debug info in these locations:  /boot/vmlinux-`uname -r`  /usr/lib/debug/lib/modules/`uname -r`/vmlinux  /lib/modules/`uname -r`/vmlinux  /lib/modules/`uname -r`/build/vmlinux

依据这个默认搜索路径,我们可以将debug的vmlinux链接到/lib/modules下,例如我的

?

sudo ln -s /usr/lib/debug/lib/modules/2.6.18-164.15.1.el5/vmlinux ? ? /lib/modules/2.6.18-164.el5xen

?

?

2:当执行简单的probe begin { log("hello world") exit() }可以,但是执行复杂的脚本就报以下错误

?

semantic error: failed to retrieve location attribute for local ‘next’ (dieoffset: 0x6660f0): identifier ‘$next’ at /usr/share/systemtap/tapset/scheduler.stp:39:17

source: task_next = $next

?

排除你内核debug版本不一致的问题,一般这个错误可以升级当前的systemtap版本解决

?

sudo yum update systemtap

?

?

3:Array overflow, check MAXMAPENTRIES near identifier

解决方案是?-DMAXMAPENTRIES=10240 类似java -D参数

这里可以参见霸爷的blog的文章:

突破systemtap脚本对资源使用的限制

http://blog.yufeng.info/archives/1213

?

?

?

热点排行