免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1415 | 回复: 0
打印 上一主题 下一主题

SystemTap的使用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-04 20:54 |只看该作者 |倒序浏览
最近使用到了Linux内核新的调试工具systemtap,感觉真的是很强大.
这里是它的网站,有详尽的资料可以参考  http://sourceware.org/systemtap/wiki
那篇IBM的红宝书写到是相当的好,重点看那篇就可以了。
使用过程中,遇到了几个问题,也在网上参加了讨论,这里记录一下,以备忘
讨论的帖子在这里: http://www.osplay.org/modules/newbb/viewtopic.php?topic_id=45&forum=10
1. 外部编译的内核模块符号找不到的问题
如果想在linux内核树外部编译一个内核模块,比如写一个testmodule,位于内核树外面,当然Makefile是这样写的
KDIR=/ora/code/linux-2.6.29
PWD=`pwd`
obj-m:=mytest.o
default:
    make -C $(KDIR) M=$(PWD) modules
clean:
    make -C $(KDIR) M=$(PWD) clean
写的stp
probe module("mymodule").function("myfunc"){
   printf("this is my func\n");
}
编译
./stap -r /ora/code/linux-2.6.29/  test.stp -m test
报的错误
semantic
error: missing x86_64 kernel/module debuginfo under
'/ora/code/linux-2.6.29/' while resolving probe point
module("mymodule").function("myfunc").
后来仔细分析,测试,推测是这样的,stap找符号表,
对kernel的函数,找的应该是vmlinux这个文件,如果是module.function,查看的应该是linux-2.6.29/modules.order,这里面记录的是内核的ko文件。但因为编译的测试模块是在内核树外面编译的,所以这个文件里不会记录对应的
ko。
那解决方法就是把外部的ko所在目录做一个符号链接进来。比如放到内核driver目录下面,然后手工添加ko路径到那个modules.order里面。
感觉这样做还是有些麻烦,可也找不到好的方法。
stap命令好像有个-d选项可以指定路径,但我指向了,还是不太好使。另外我发现在内核下面的modules.order里面还必须加入的是
kernel/打头的,写绝对路径是不行的,不知道这个是不是stap的强制要求。所以必须搞符号链接。
还有,自己生成test模块时其实也会生成对应的modules.order文件,但里面的内容是kernel//ora/code/testmod
/mytest.ko, 这个路径应该是错误的吧?不知道为什么会生成这样的内容。
2. 第二种是关于交叉编译的问题。
刚刚
release的1.0版本说支持交叉编译的,就是说编译的时候用 stap -r /path test.stp -m
test,就会生成对应的ko,然后在目标机器上只需要用staprun加载生成的test.ko文件就行了。按理说只需要拷贝test.ko和
staprun文件到目标机上就可以了,但我这样做的时候,加载的时候会提示找不到其它依赖的文件(依赖的文件也是stap目录里面的),我现在的解决办
法是把整个stap目录导出,然后在目标机上mount过来,才可以运行成功。而且在目标机上stap的目录也要和宿主机路径保持一模一样的才行。
这个问题: 只需要拷贝staprun和stapio到目标机里面就可以了。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/93140/showart_2139355.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP