ubuntu+systemtap进行Linux内核和用户空间开发测试
Sailor_forever sailing_9806#163.com
(本原创文章发表于Sailor_forever 的个人blog,未经本人许可,不得用于商业用途。任何个人、媒体、其他网站不得私自抄袭;网络媒体转载请注明出处,增加原文链接,否则属于侵权行为。如有任何问题,请留言或者发邮件给sailing_9806#163.com)
【摘要】本文主要介绍在ubuntu平台 + 自定义内核上如何安装systemtap工具包及解决编译加载运行过程中的一些问题,如何利用systemtap工具监测分析内核函数,内核模块及用户态程序。
【关键字】ubuntu, systemtap, utrace, backtrace, dtrace,callstack
1.2.1 卸载通过apt-get自动安装的systemtap. 2
6 Systemtap加载KO异常,Unknown symbol in module. 9
7 error:implicit declaration of function ‘unregister_uprobe’13
Systemtap 是学习内核一个必不可少的工具,它不仅可以侦测内核空间的相关信息,还可以侦测用户空间的信息,是研究内核源代码、优化系统性能及调试诊断系统问题的一个必备工具。相关原理信息可参见附录https://wiki.ubuntu.com/Kernel/Systemtap及“Linux 下的一个全新的性能测量和调式诊断工具 Systemtap, 第 3 部分: Systemtap”
http://www.ibm.com/developerworks/cn/linux/l-cn-systemtap3/#main
1 Systemtap安装
1.1 Apt-get自动安装systemtap
用系统工具自动安装systemtap时,用户不用考虑各个软件包的依赖关系,系统会自动根据当前内核版本下载相应的软件包。
dd@ubuntu:/mnt/hgfs/systemtap/kvm$ sudoapt-get install systemtap
。。
The following extra packages will beinstalled:
libdw1 systemtap-commonsystemtap-runtime
The following NEW packages will beinstalled:
libdw1 systemtap systemtap-common systemtap-runtime
。
Get:1 http://us.archive.ubuntu.com/ubuntu/quantal-updates/main libdw1 i386 0.153-1ubuntu1.1 [216 kB]
。。
如上可知,系统自动安装了相关的4个软件包libdw1 systemtap-common systemtap-runtime
1.2 源代码编译安装systemtap
有时候系统自动安装的不一定能用,这个时候需要升级,此时只能通过下载源代码自己编译
1.2.1 卸载通过apt-get自动安装的systemtap
首先要卸载系统之前安装的相关package,避免后续带来其他副作用。
dd@ubuntu:/mnt/hgfs/systemtap$ sudo apt-getremove systemtap systemtap-common systemtap-runtime
。。
Removing systemtap ...
Removing systemtap-common ...
Removing systemtap-runtime ...
Processing triggers for man-db ...
1.2.2 下载systemtap源码包
下载相应版本的源码包。源码包并不是越新越好,因为他们之间有一定的依赖关系,最简单的是按照内核源码包发布的时间来选择systemtap。