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
阅读(1220) | 评论(0) | 转发(0) |