Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2790314
  • 博文数量: 258
  • 博客积分: 9440
  • 博客等级: 少将
  • 技术积分: 6998
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-03 10:28
个人简介

-- linux爱好者,业余时间热衷于分析linux内核源码 -- 目前主要研究云计算和虚拟化相关的技术,主要包括libvirt/qemu,openstack,opennebula架构和源码分析。 -- 第五届云计算大会演讲嘉宾 微博:@Marshal-Liu

文章分类

全部博文(258)

文章存档

2016年(1)

2015年(4)

2014年(16)

2013年(22)

2012年(41)

2011年(59)

2010年(40)

2009年(75)

分类: LINUX

2011-12-17 14:16:18

  1.  从源安装systemtap
  1. $ sudo apt-get install systemtap

 2. 由于ubuntu 桌面版默认没有安装kernel-debug-info,所以安装了systemtap后仍然不能够追踪内核信息,因此需要手动安装kernel-debug-info包。

 (1)查看当前内核版本

$ uname -ar (2)下载对应内核版本的debug-info package
 
 这里下载linux-image-3.0.0-15-generic-dbgsym_3.0.0-15.24_i386.ddeb
3. 安装linux-image-3.0.0-15-generic-dbgsym_3.0.0-15.24_i386.ddeb
  1. $sudo dpkg -i linux-image-3.0.0-15-generic-dbgsym_3.0.0-15.24_i386.ddeb
经过以上安装配置后,就可以跟踪监控内核信息了,但是现在还不能跟踪linux内核模块的信息,因为,systemtap对linux内核模块的跟踪是通过libelf库来查找
/usr/lib/debug目录下以.ko.dedug结尾的模块,但是linux发行版通常将linux模块的扩展名修改为.ko。
4. 安装elfutils并进行相应配置
$sudo apt-get install elfutils
  1. for file in `find /usr/lib/debug -name '*.ko' -print`
  2.     do
  3.     buildid=`eu-readelf -n $file| grep Build.ID: | awk '{print $3}'`
  4.     dir=`echo $buildid | cut -c1-2`
  5.     fn=`echo $buildid | cut -c3-`
  6.     rm -fr /usr/lib/debug/.build-id
  7.     mkdir -p /usr/lib/debug/.build-id/$dir
  8.     ln -s $file /usr/lib/debug/.build-id/$dir/$fn
  9.     ln -s $file /usr/lib/debug/.build-id/$dir/${fn}.debug
  10.     done

5. 写个例子测试下

  1. sudo stap -ve 'probe begin { log("hello world") exit() }'
如果能够打印出hello world,说明安装配置成功!
阅读(2282) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

cfanfrank2012-02-06 19:07:52

谢谢啊!