`
xieyj
  • 浏览: 100292 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

systemtap学习笔记

 
阅读更多

       在学习systemtap过程中使用show_trace,这个函数在/proc/kallsyms中存在,表示这是个有效的函数,用systemtap执行时候报错unkown symbol in module,用dmesg看错误比较明显Unkown symbol show_stack,显然说明这个函数没有导出,导出的符号表存在那里呢,看一下内核源码中的modules.txt,导出的符号表文件为Module.symvers 。具体路径在/lib/moudules/`uname -r`/Module.symvers),

       那systemtap到那里查找内核的调试符号呢?在http://sourceware.org/systemtap/man/stappaths.7.html上面有说明,一般在/usr/lib/debug/lib/modules/$(uname -r)/,SYSTEMTAP_DEBUGINFO_PATH 这个环境变量可以改写上面的地址。

        默认,systemtap查找vmlinux调试信息的路径为

        /boot/vmlinux-`uname -r` 

        /lib/modules/`uname -r`/vmlinux

        /lib/modules/`uname -r`/vmlinux.debug

        /lib/modules/`uname -r`/build/vmlinux

        /lib/modules/`uname -r`/.debug/vmlinux.debug

        /usr/lib/debug/lib/modules/`uname -r`/vmlinux.debug

        /var/cache/abrt-di/usr/debug/lib/modules/`uname -r`/

        /var/cache/abrt-di/usr/lib/debug/lib/modules/`uname -r`/vmlinux.debug

 

        stap -l 'kernel.function("*")' 列出的是调试信息中的所有函数,包括上面的show_stack。表明show_stack可以设置跟踪点,但因为没有导出,不可以在模块中调用。

        用strace跟踪程序的执行过程,很多时候也可以知道具体的原因。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics