首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

systemtap学习札记

2013-08-06 
systemtap学习笔记? ? ? ?在学习systemtap过程中使用show_trace,这个函数在/proc/kallsyms中存在,表示这是

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跟踪程序的执行过程,很多时候也可以知道具体的原因。

热点排行