linux内核工程师讲义systemtap_第1页
linux内核工程师讲义systemtap_第2页
linux内核工程师讲义systemtap_第3页
linux内核工程师讲义systemtap_第4页
linux内核工程师讲义systemtap_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1SystemTap第2SystemTap章第4章语言(script)介关于第5probe详第6probe中常用函数一附第 1.1关于 作和 1

准备阶第

析调试信息。信息。SystemTap需要通过内核调试信息(kernel-2.22.2第 3.1stap3.1.1命令简stap[OPTIONS]FILENAMEstap[OPTIONS]-stap[OPTIONS]eSCRIPT ARGUMENTS:参数 probebegin }

#stapo-world.stpoWorld!#

(2)stapOPTIONS–eSCRIPTARGUMENTS]的例子:此方法直接在命令行输入(script)命令。此时,必须且(script)命令必须用两个单引号“‘‘”引起来#stap–e‘probebegin{ o#

详解3.1.3ARGUMENTS详,stap[OPTIONS]FILENAMEttsts1{argstr1=@1;argstr2=argint3=}

probetimer.ms(1000)#after1000{printf(“argstr1=%s,argstr2=%s,argint3=%d\n”,argstr1,}

globalargstr1,argstr2,arg-tssTR1R217BEGINNOW!

argstr1=STR1,argstr2=STR2,argint3=173.2staprun3.2.1命令简staprun O块ODULE详本章学结及问题staprun操作的内核模块是如何保存下来的?在将程序翻译成C代码编译成内核模块之后,是否可以在此时将操作中止(PASS4阶段??)并将生成内核模块保存下来,以便后面使用staprun进第章语言介4.1关于Probepoint Probepoint

probehandle probehandle“probepoint”是probe动作的时机。(也就是probe程序监视的某点, “probehandle是当probe插入内核后所做的具体动作。当这个动作完成probeprobe-Point{statement例t#cattprobe t}

probepointstatement 上例中,有gi和end两个btegin是SystemTaptp时直probe程序并没有结束。按下[Ctrl+C]rlS]stemTapstT此时处理end这个probe-Poitd执行完成后ys后Sta例BeginNow!EndNow!

e且命令需要用一对单对单proberoint间4.2script程序的基本语 语言的变 局部变量:在的probe /......C++语言风/*...*/C语言风 间可以用”;“分隔开,也可以不用。一行代码可分多行写。(c.)if语 (e.) (i.)delete语语delete 语delete4.2.3(1)“.”连如str1“abc”str2“def”则:str1.str2为(2)比较运算符也可以使用在字符串比较时。如上面的str1str2(3)[条件[statement14.2.4 4.2.5输操作符和方法 global (2)关说所均globalx{ #stapoperation.stp1020vg%d=sum%d/count%d\n”,@avg(x),@sum(x),}4.2.7嵌入C语言代语言中可以嵌入C代码。要嵌入的C代码必须以“%{” 4.2.8关于 4.3 probe{}4.3.3联合数组 第

SystemTap结束时的动作。5.1 (targetvariables$”赋值的变量为#catbegin-end-test.stpprobebegin{}5.2 #catbegin-end-test.stpprobeend{printf(“EndNow}#stap 只(sequencenumber)来控制执 #Inatapsetprobebegin(-1000)#Inauser

小于userfile的顺rfile的执行数为默认的0),5.3 5.4 rneljiffiestimer)定义[jiffiestime] t 个随机数位于[-M…+M]之间)将会与N相加。 秒s纳 timer.ns(N)ii.(N).randomize(M)5.5//该系列探测点对kernel、module、program等使用象征性 modu 只包含内联函数(inlinedFunct 内联函数(inlinedFuncti kernel.function(“*init*”),kernel.function(“*exit*”) module()lsatement(0xc 5.6 ( penalty)和空间penal 它用。(timepenalty:为一个 一个数据结构在指定的部位。) #includeintkfunc(structinode*i,int{intrc=0; //returncodetrace_mark(kfunc_entry,"inode%pop%d",i,op);//...bulkofkfunc()here...trace_marknrxitunc_exit,"r;}

d",如何在SystemTa中使用‘kernel.mark(“NAME’stprobekernel.mark("kfunc_entry"){printf("kfunc_entrymarkerhiprobekernel.mark("kfunc_exit"){printf("kfunc_exitmark 如 probe intf("kfunc_entrymarkerhit:%s,%p,第 章

ame(),tid(),pid(),ppid(),uid(),euid(),gid()regs(),backtrace(),print_stack(),print_backtrace(),robefunc(),probemod(),target(),is_return()qs_wait(),qs_run(),qs_done(),qsq_start(),qsq_print(),qsq_utilization(),qsq_blocked(),qsq_wait_queue_length(),qsq_service_time(),qsq_wait_time(),qsq_throughput()6.1 6.2

6.3substirg(str:string,start:long,6.4 年月日时开始至今的纳秒数

年月日时开始至今的毫秒数 年月日时开始至今的微秒数 年月日时开始至今的秒数6.5(1) 表缓存(registerdump???)。 选-x-c 66.7queue_statstapset提供了一些函数,这些函数当接收到队 ,执 queueaverage itqueuervicearequestftimethewaitqueuewastageoftimeanyrequestwasbeingqsq_service_time:long(qname:string,scale:long)为单位)。(qs_wait6.8 、进程名、 delta 值作为 6.9 6.106.11形式,如“WedJun3021:49:0082006”的形式。6.12

实 加(1)Pass (2)Pass 注:如果用户指定“-p2”选项,则在Pass2阶段执行完后便停止,然 (3)Passa翻译成C语言代 翻(4)Passa

加载内核模注:可以通 (1)-k#stap-ktest3.stpBeginnow TueMay1915:21:17End temporarydirectory指定-k选 (2)-b#stap-vPass1:parseduserscriptand38libraryscript(s)in570usr/10sys/582realPass2:yzedscript:2probe(s),3function(s),1embed(s),1global(s)in10usr/0sys/12realms.Pass3:usingcached/root/.systemtap/cache/18/stap_183dfd83c271f99a1b46fd35932be177_3183.cPass4:usingcached/root/.systemtap/cache/18/stap_183dfd83c271f99a1b46fd35932be177_3183.koPass5:startingrun.Begin TueMay1915:33:03EndPass5:runcompletedin60usr/40sys/2792real -b选项会解析、编译#stap-b-vPass1:parseduserscriptand38libraryscript(s)in550usr/20sys/579realPass2:yzedscript:2probe(s),3function(s),1embed(s),1global(s)in10usr/0sys/11realms.Pass3:usingcached/root/.systemtap/cache/8e/stap_8e244751d660a4840ef0fff5fa0e5693_3183.cPass4:usingcached/root/.systemtap/cache/8e/stap_8e244751d660a4840ef0fff5fa0e5693_3183.koPass5startingrun.(3)-m选项#stap-mTempName-k-vtest3.stpWarning:using'-m'disablescachesupport.Pass1:parseduserscriptand38libraryscript(s)in560usr/20sys/583realPass2: yzedscript:2probe(s),3function(s),1embed(s),1global(s)in10usr/0sys/13realms.Pass3:translatedtoCinto"/tmp/stapZZzjTY/TempName.c"in10usr/0sys/2realms.Pass4:compiledCinto"TempName.ko"in6280usr/750sys/7050realms.Pass5:startingrun.Begin TueMay1915:48:14End Pass5:runcompletedin60usr/60sys/1959realms.Keetemporarydirectory"/tmp/stapZZzjTY"#ls-l/tmp/stapZZzjTY/total580-rw-r--r--1root 1407May1923:48-rw-r--r--1root 0May192

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论