怎样自己建设网站:调试内核态的信息,就需要在安装SystemaTap包
但是如果需要调试内核态的信息,就需要在安装SystemaTap包的同时安装和内核相
匹配版本的-devel、-debuginfo以及-debuginfo-common。
注意,包的名称必须完全匹配才行。比如服务器的内核是kernel-2.6.32.279.22.l.r16.
x86_64.rpm,那么对应安装的debuginfo包就必须是kernel-debugin fo-2.6.3 2.279.22.l.r16.
x86_64.rpm。
通过uname.r命令可以查看当前内核的全名,如下。
debuginf的包,通常在http://debuginfo.centos.org/上可以下载。如果这里没有,比如
你的kernel.rpm本来就是自己编译出来的,那么就只能自己再对应编译kernel-debuginfo.
rpm了。
安装完成之后可以测试内核是否已经成功支持SystemTap,如下。
一 一
, 如果该脚本能够正常运行,在终端上将看到各种调试输出,以及最终结果“hello world”
字符串,整个输出是类似下面这样的。
Pass l: parsed user script and 72 library script (s) usinS 87132virt/21460res/
2600shr kb, in 180usr/10sys/189real ms.:l ;
Pass 2: analyzed script: 1 probe (s), 2 function (s), 0 embed(s) , 0 global (s)
●25●
网站运维技术与实践
using 87528virt/22152res/2816shr kb, in 10usr/Osys/6real ms.
Pass 3: using cached /root/.systemtap/cache/f5/stap_f59e55597ca61773644-
fc7321e27693f_790.c
Pass 4: using cached /root/.systemtap/cache/f5/stap_f59e55597ca61773644-
fc7321e27693f 790.ko
Pass 5: starting run,
. hello world : ; . : '
Pass 5: run completed in Ousr/10sys/283real mS-i .
从调试信息中,也可以确认之前提到的
stap_f59e55597ca61773644fc7321e27693f_790.ko
一点,即stap确实是编译出来了一个
内核模块并加载的。
1.3.8.2基础语法
首先介绍stap脚本的基础语法,即常用函数,控制结构和运行参数。
1.常用函数
stap脚本中每个完整的结构都是由probe组成的,表明语句像探针一样插入某个位置
等待触发事件。事件分为同步事件和异步事件。
芎用的同步事件类型如表1.3所示。
表1-3 | |
事件类型 | 探针触发时刻 |
kemel.function(" sys_sync").call | 调用sys_sync时 |
kemel.function(" sys_syne ").retum | 返回sys_sync时 |
syscall.read | 系统调用read()时 |
kemel.function("*@kerne Vfork.c").return | 从fork.c中任一函数返回时 |
kemel.statement("*@kernel/sched.c:29 1 7 ") | 运行到文件kemel/sched.c第2917行 |
process("/lib/libs.so.6 ").function(" *malloc*') | 进入名字包含“malloc”的glibe函数 |
module(" ext3 ").function(" ext3~file_write") | 调用ext3模块的write函数时 |
异步事件则如表1-4所示。
表1-4 | |
事件类型 | 探针触发时刻 a |
begin | stap脚本开始运行时 《 |
End
timer.jiffies(1000)
timer.ms(200).randomize(50)
本文地址:
http://www.yishenzhou.com/yes/post/478.html | 分类:全网营销 |
次阅读