SystemTap安装与调试介绍

systemtap 的调试方式挺适合定位一些内核层的奇怪问题,尤其是在你已经排查完用户空间,但还是不清楚哪里出锅的场景下。安装过程嘛,其实不算复杂,主要就三步:装systemtap-runtime、查下内核版本(用uname -a)、再配上匹配的kernel-debuginfokernel-devel。调试内核嘛,少不了这些包,版本别装错了就行。

debuginfo这块,有时候需要手动下对应版本的 rpm 包,尤其是老系统,比如2.6.32-279.el6那种。命令是:

rpm -ivh kernel-debuginfo-common-x86_64-2.6.32-279.el6.x86_64.rpm
rpm -ivh kernel-debuginfo-2.6.32-279.el6.x86_64.rpm
yum install kernel-devel.x86_64

哦对了,建议你配套看点源码,有个kernel3.0 内核源码还不错,代码干净,适合结合着 systemtap 来看执行路径。

如果你正被某些驱动卡住,又找不到问题在哪,systemtap 就是救命稻草,能让你直接看到函数是怎么跑的,哪个点耗时最多,甚至还能统计调用频率,挺方便。

啦,要玩转它,还是建议多看看像iOS Kernel Programming这种讲驱动和内核交互的资料,对理解 probe 脚本挺有的。

嘛,不怕你不会写脚本,就怕你不用它。别光靠printf调半天不出结果,试试systemtap,你会感谢自己的。

ppt 文件大小:419.5KB