SystemTap安装与调试介绍
systemtap 的调试方式挺适合定位一些内核层的奇怪问题,尤其是在你已经排查完用户空间,但还是不清楚哪里出锅的场景下。安装过程嘛,其实不算复杂,主要就三步:装systemtap-runtime
、查下内核版本(用uname -a
)、再配上匹配的kernel-debuginfo
和kernel-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
,你会感谢自己的。
419.5KB
文件大小:
评论区