在ubuntu12.04上安装systemtap

发布时间:2020-05-30 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了在ubuntu12.04上安装systemtap脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

系统环境

linux发行版

  1. ubuntu 12.04.5 内核 3.13.0-32-generic

安装包

使用apt-get安装systemtap没法用,因为太老了,默认是1.6版本。现在已经出到了3.0.曾经换过好几个内核版本,都安装默认的systemtap 报编译错误。卡在第四步。错误如下:

感觉ubuntu老的版本内核更新很快,但是软件更新跟不上。后来参考了自定义安装systemtap才搞定。其中曲折实在是令人心塞。现在记录下来,希望遇到这个错误的人不用再试系统版本了,直接自己编译就好了。

内核debuginfo对应的包http://ddebs.ubuntu.com/pool/main/l/linux-lts-trusty/
最近的elfultils的下载地址:https://fedorahosted.org/releases/e/l/elfutils/
最新systemtap 的下载地址:http://sourceware.org/systemtap/ftp/releases/

安装步骤


因为systemtap需要内核的调试信息,所以先去debuginfo网站下载自己的内核所对应的dbgsym包。因为systemtap对内核的检查机制非常严格,所以如果只是使用uname -r 查看,会省略内核的小版本号。比如3.13.0-32-generic。实际上还有小版本号。如下图所示:

可以看到其实真正的版本号应该是3.13.0-32.57~precise1,所以我们下载dbgsym包的时候要看准内核号。
这个下载完后就安装。命令如下:

sudo dpkg -i linux-image-3.13.0-32-generic-dbgsym_3.13.0-32.57~precise1_amd64.ddeb

1)卸载系统已经安装的systemtap(发行版对应的):
首先,如果你的系统已经使用apt-get安装了systemtap,尽量在这一步先卸载已经安装的systemtap。如果不进行卸载,调用的命令stap来自于原来已经安装的systemtap,是无法在新内核上运行的。
2)安装systemtap和elfutils:
下载最新的systemtap和elfutils源码:注意,此处一定要下载最新的源码自己安装,否则可能会造成编译以后的软件无法运行
一块编译:
将2个包解压到2个不同的目录,然后进入systemtap包目录,执行
./configure –with-elfutils=/path/to/elfutils-dir –prefix=yourpatch
make
make install
总结:这一步的关键是软件版本一定要是最新的(如果测试最新内核),环境变量要进行设置。

注意:如果我们设置了安装路径,一定要把对应systemtap安装路径下面的bin添加到环境变量PATH之中,否则调用stap的时候会发现找不到这个程序。

安装完成以后,我们使用下面的shell命令进行测试,如果输出hello world,说明systemtap安装成功。
$:stap -ve 'probe begin { log("hello world") exit() }'
运行这个命令时,最好将用户加入到stapdev用户组中。省的老是使用root权限。
命令如下:
sudo usermod -a -G stapdev $USER

总结

以上是脚本之家为你收集整理的在ubuntu12.04上安装systemtap全部内容,希望文章能够帮你解决在ubuntu12.04上安装systemtap所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入脚本之家官方QQ群:1065694478