转载:
1. 从源安装systemtap
$ sudo apt-get install systemtap
2. 由于ubuntu 桌面版默认没有安装kernel-debug-info,所以安装了systemtap后仍然不能够追踪内核信息,因此需要手动安装kernel-debug-info包。
(1)查看当前内核版本
$ uname -ar(2)下载对应内核版本的debug-info package
3. 安装linux-image-3.0.0-15-generic-dbgsym_3.0.0-15.24_i386.ddeb
$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- for file in `find /usr/lib/debug-name'*.ko' -print`
- do
- buildid=`eu-readelf-n $file| grep Build.ID:| awk '{print $3}'`
- dir=`echo $buildid| cut-c1-2`
- fn=`echo $buildid| cut-c3-`
- rm -fr /usr/lib/debug/.build-id
- mkdir -p/usr/lib/debug/.build-id/$dir
- ln -s $file/usr/lib/debug/.build-id/$dir/$fn
- ln -s $file/usr/lib/debug/.build-id/$dir/${ fn}.debug
- done
5. 写个例子测试下
$sudo stap -ve 'probe begin { log("hello world") exit() }'
如果能够打印出hello world,说明安装配置成功!
[cpp]
- <pre name="code" class="css"><pre name="code" class="cpp"><pre name="code" class="css"><pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- </pre></pre></pre>