Chinaunix首页 | 论坛 | 博客
  • 博客访问: 237128
  • 博文数量: 72
  • 博客积分: 2592
  • 博客等级: 少校
  • 技术积分: 834
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-28 00:16
文章分类

全部博文(72)

文章存档

2014年(1)

2012年(1)

2011年(6)

2010年(12)

2009年(19)

2008年(28)

2007年(4)

2005年(1)

我的朋友

分类: LINUX

2008-09-30 00:16:41


                       Dtrace in Linux

                              Last updated 2008-10-5

    另一篇备忘录。关于OpenSolaris中我关注的特性。Paul Fox 08年4月开始移植Dtrace到Linux上,现在已经有了很多个snapshot,他好像没有用git/svn等版本控制,直接用打包备份的方式进行维护。
其中,在Ubuntu8.04上编译通过,运行dtrace -S *.d时tty会无响应,进程也kill不掉,dracedrv.ko出现Oops错误。用他blog上展示的编译的程序,运行dtrace -S *.d,在Ubuntu系统上运行:dtrace -f open,不能显示如他blog显示的内容,但用Ctrl+C能退出程序。

在现在用的这个ArchLinux系统上编译没通过。
gcc -g -I. -I../../common/ctf -I../uts/common -I../linux -I../libproc/common -I../libctf/ -DCTF_OLD_VERSIONS -D_ILP32 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -c dt_lex.c
In file included from dt_lex.l:35:
./dt_impl.h:631: error: conflicting types for ‘yytext’
:959: error: previous declaration of ‘yytext’ was here
make[2]: *** [../build/libdtrace.a(dt_lex.o)] Error 1
make[1]: *** [all0] Error 2
make: *** [all] Error 2

似乎是flex解析出来问题。

今天已经完成的工作是:将dtrace-20080705.tar.bz2纳入现在系统的git管理,建立devel分支。并修改了编译不通过的代码。
目前,libdtrace、libproc等库文件已经编译成功,正在修改dtracedrv内核模块的源码。由于Paul基于Ubunut的2.6.24内核开发,而在2.6.25-ARCH上,有部分内核接口改变。需要寻找global_flush_tlb函数的替代函数,在新内核中这个函数已经不存在。

10-5:
编译通过,load的时候需要先加载deflate模块;
change_page_attr在2.6.25中不再使用,目前没找到代替,先注掉。


参考链接:
http://www.crisp.demon.co.uk/blog/index.html
ftp://crisp.dynalias.com/pub/release/website/dtrace/



http://blogs.sun.com/ahl/entry/dtrace_for_linux
http://blogs.sun.com/ahl/entry/dtrace_for_linux



    
阅读(1192) | 评论(0) | 转发(0) |
0

上一篇:[Note]ZFS on Linux

下一篇:静心与节制

给主人留下些什么吧!~~